Java vanClass giving 找不到符号错误 [closed]

Java vanClass giving cannot find symbol error [closed]

提问人:metamorphisis 提问时间:7/7/2020 更新时间:7/8/2020 访问量:209

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

3年前关闭。

我的代码有几个类,有不同的汽车和一些类。下面是我的代码,我不确定为什么是vanClass van;不起作用,因为它基本上是过去有效的类的复制粘贴。任何帮助都是值得赞赏的。澄清一下,我只在自动泊车类的最后几行有问题,我将 vanClass 作为 van 启动并从那里开始。

import java.util.*;

class sedan {
    String make;
    String model;
    String color;
    int year;
    double price;
    boolean fourWD;
    boolean isheavyDuty;
    String carries;

    public sedan(String initMake, String initModel, String initColor, int initYear, double initPrice) {
        make = initMake;
        model = initModel;
        color = initColor;
        year = initYear;
        price = initPrice;
    }

    @Override
    public String toString() {
        String name = "Sedan";
        String main = (color + " " + make + " " + model + " " + name + " (" + year + ") costs $" + price);
        return main;
    }
}

class SUV {

    String make;
    String model;
    String color;
    int year;
    double price;
    boolean fourWD;
    String carries;

    public SUV(String initMake, String initModel, String initColor, int initYear, double initPrice, boolean initFourWD){
        make = initMake;
        model = initModel;
        color = initColor;
        year = initYear;
        price = initPrice;
        fourWD = initFourWD;
    }

    public String toString() {
        String name = "SUV";
        String main = new String();
        if (fourWD) {
            main = ("4WD " + color + " " + make + " " + model + " " + name + " (" + year + ") costs $" + price);
        }
        else {
            main = (color + " " + make + " " + model + " " + name + " (" + year + ") costs $" + price);
        }

        return main;
    }
}

class truckClass {

    String make;
    String model;
    String color;
    int year;
    double price;
    boolean fourWD;
    boolean isheavyDuty;
    String carries;

    public truckClass(String initMake, String initModel, int initYear, double initPrice, boolean initisheavyDuty, String initCarries){
        make = initMake;
        model = initModel;
        year = initYear;
        price = initPrice;
        isheavyDuty = initisheavyDuty;
        carries = initCarries;

    }

    public String toString() {
        String name = "Truck";
        String main = (make + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price);
        return main;
    }

class vanClass {

    String make;
    String model;
    int year;
    double price;
    boolean isCovered;
    String carries;

    public vanClass(String initMake, String initModel, int initYear, double initPrice, boolean initisCovered, String initCarries){
        make = initMake;
        model = initModel;
        year = initYear;
        price = initPrice;
        isCovered = initisCovered;
        carries = initCarries;

    }

    public String toString() {
        String name;
        String main;
        if (isCovered()){
            name = "covered Van";
            String main = (make + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price);
        }
        else {
            name = "Van";
            String main = (make + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price);
        }
        return main;
    }
}






public class autoPark {
    public static void main(String args[]) {
        sedan sedan1; // declaring cars object by name sedan1
        sedan1 = new sedan("Ford" , "Model-1" , "white" , 2015, 20000); // initialising sedan1 using sedan constructor
        System.out.println(sedan1); // printing sedan1 for invoking toString() method

        SUV suv; // declaring cars object by name suv
        suv = new SUV("Ford" , "Model-1" , "white" , 2015, 20000, true); // initialising suv using SUV constructor
        System.out.println(suv); // printing suv for invoking toString() method

        truckClass truck; //declaring cars object by name truck
        truck = new truckClass("Ford" , "Model-1" , 2015, 20000, true, "2"); // initialising truck using truck constructor
        System.out.println(truck); // printing truck for invoking toString() method

        vanClass van;
        van = new vanClass("Ford" , "Model-1" , 2015, 20000, true, "2";
        System.out.println(van);


    }
}
爪哇岛

评论

5赞 Stultuske 7/7/2020
在启动 vanClass 之前,您缺少一个右括号。您应该了解继承(您的大部分代码可以重用,而不是重复)和命名约定,它使您的代码更易于阅读
0赞 metamorphisis 7/7/2020
哇,多么愚蠢的错误。谢谢!
0赞 NomadMaker 7/7/2020
Java 编码约定具有以大写字母 (Truck) 开头的类,而方法和变量以小写字母开头。这将允许您使用“Truck”而不是“truckClass”,因为大写字母已经告诉您它是一个类。

答:

1赞 metamorphisis 7/7/2020 #1

缺少 } 和 )。愚蠢的错误

2赞 Lovesh Dongre 7/7/2020 #2

我遇到了 4 个问题

  1. 缺少 } 就在开始之前vanClass
  2. 缺少 ) 之后van = new vanClass("Ford" , "Model-1" , 2015, 20000, true, "2");
  3. 额外的括号对,后面是成员数据而不是方法isCovered
  4. 在类的方法中声明为 String 两次maintoStringSUV
import java.util.*;

class sedan {
    String make;
    String model;
    String color;
    int year;
    double price;
    boolean fourWD;
    boolean isheavyDuty;
    String carries;

    public sedan(String initMake, String initModel, String initColor, int initYear, double initPrice) {
        make = initMake;
        model = initModel;
        color = initColor;
        year = initYear;
        price = initPrice;
    }

    @Override
    public String toString() {
        String name = "Sedan";
        String main = (color + " " + make + " " + model + " " + name + " (" + year + ") costs $" + price);
        return main;
    }
}

class SUV {

    String make;
    String model;
    String color;
    int year;
    double price;
    boolean fourWD;
    String carries;

    public SUV(String initMake, String initModel, String initColor, int initYear, double initPrice, boolean initFourWD){
        make = initMake;
        model = initModel;
        color = initColor;
        year = initYear;
        price = initPrice;
        fourWD = initFourWD;
    }

    public String toString() {
        String name = "SUV";
        String main = new String();
        if (fourWD) {
            main = ("4WD " + color + " " + make + " " + model + " " + name + " (" + year + ") costs $" + price);
        }
        else {
            main = (color + " " + make + " " + model + " " + name + " (" + year + ") costs $" + price);
        }

        return main;
    }
}

class truckClass {

    String make;
    String model;
    String color;
    int year;
    double price;
    boolean fourWD;
    boolean isheavyDuty;
    String carries;

    public truckClass(String initMake, String initModel, int initYear, double initPrice, boolean initisheavyDuty, String initCarries){
        make = initMake;
        model = initModel;
        year = initYear;
        price = initPrice;
        isheavyDuty = initisheavyDuty;
        carries = initCarries;

    }

    public String toString() {
        String name = "Truck";
        String main = (make + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price);
        return main;
    }
}

class vanClass {

    String make;
    String model;
    int year;
    double price;
    boolean isCovered;
    String carries;

    public vanClass(String initMake, String initModel, int initYear, double initPrice, boolean initisCovered, String initCarries){
        make = initMake;
        model = initModel;
        year = initYear;
        price = initPrice;
        isCovered = initisCovered;
        carries = initCarries;

    }

    public String toString() {
        String name;
        String main;
        if (isCovered){
            name = "covered Van";
            main = (make + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price);
        }
        else {
            name = "Van";
            main = (make + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price);
        }
        return main;
    }

}

public class autoPark {
    public static void main(String args[]) {
        sedan sedan1; // declaring cars object by name sedan1
        sedan1 = new sedan("Ford" , "Model-1" , "white" , 2015, 20000); // initialising sedan1 using sedan constructor
        System.out.println(sedan1); // printing sedan1 for invoking toString() method

        SUV suv; // declaring cars object by name suv
        suv = new SUV("Ford" , "Model-1" , "white" , 2015, 20000, true); // initialising suv using SUV constructor
        System.out.println(suv); // printing suv for invoking toString() method

        truckClass truck; // declaring cars object by name truck
        truck = new truckClass("Ford" , "Model-1" , 2015, 20000, true, "2"); // initialising truck using truck constructor
        System.out.println(truck); // printing truck for invoking toString() method

        vanClass van;
        van = new vanClass("Ford" , "Model-1" , 2015, 20000, true, "2");
        System.out.println(van);

    }
}

您需要考虑使用其他人提到的继承。

2赞 Marc 7/7/2020 #3

我使用继承修复并重构了您的类:

abstract class Vehicle{
    protected String maker;
    protected String model;
    protected int year;
    protected double price;

    public Vehicle(String maker, String model, int year, double price) {
        this.maker=maker;
        this.model=model;
        this.year=year;
        this.price=price;
    }

    abstract String getType();

    @Override
    public String toString() {
        return maker + " " + model + " " + getType() + " (" + year + ") costs $" + price;
    }
}

abstract class HeavyVehicle extends Vehicle{
    protected String carries;

    public HeavyVehicle(String maker, String model, int year, double price, String carries) {
        super(maker, model, year, price);
        this.carries=carries;
    }
}

class SUV extends HeavyVehicle{

    String color;
    boolean fourWD;

    public SUV(String maker, String model, String initColor, int year, double price,
        boolean initFourWD) {
        super(maker,model,year,price,"1");
        color = initColor;
        fourWD = initFourWD;
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        if (fourWD) {
            sb.append("4WD ");
        }
        sb.append(color + " " + super.toString());
        return sb.toString();
    }

    @Override
    String getType() {
        return "SUV";
    }
}

class Truck extends HeavyVehicle{

    public Truck(String maker, String model, int year, double price,String carries) {
        super(maker,model,year,price,carries);
    }

    public String toString() {
        return maker + " " + model + " " + getType() + " (" + year + ") carries" + carries + " costs $" + price;
    }

    @Override
    String getType() {
        return "Truck";
    }
}

class Van extends HeavyVehicle{

    boolean isCovered;

    public Van(String maker, String model, int year, double price, boolean isCovered, String carries){
        super(maker,model,year,price,carries);
        this.isCovered = isCovered;

    }

    public String toString() {
        String name = isCovered ? "covered Van" : getType();
        return maker + " " + model + " " + name + " (" + year + ") carries" + carries + " costs $" + price;
    }

    @Override
    String getType() {
        return "Van";
    }
}


class Sedan extends Vehicle{
    String color;

    public Sedan(String maker, String model, String color, int year, double price) {
        super(maker,model,year,price);
        this.color = color;
    }

    @Override
    public String toString() {
        return color + " " + super.toString();
    }

    @Override
    String getType() {
        return "Sedan";
    }
}

public class Main {
    public static void main(String args[]) {
        Sedan sedan1; // declaring cars object by name sedan1
        sedan1 = new Sedan("Ford", "Model-1", "white", 2015, 20000); // initialising sedan1 using sedan constructor
        System.out.println(sedan1); // printing sedan1 for invoking toString() method

        SUV suv; // declaring cars object by name suv
        suv = new SUV("Ford", "Model-1", "white", 2015, 20000, true); // initialising suv using SUV constructor
        System.out.println(suv); // printing suv for invoking toString() method

        Truck truck; // declaring cars object by name truck
        truck = new Truck("Ford", "Model-1", 2015, 20000, "2"); // initialising truck using truck constructor
        System.out.println(truck); // printing truck for invoking toString() method

        Van van;
        van = new Van("Ford", "Model-1", 2015, 20000, true, "2");
        System.out.println(van);

    }
}