在Java中找不到Symbol错误 - 为什么?

时间:2016-06-26 23:40:18

标签: java

我很难理解面向对象的世界。我正在做家庭作业,我不明白为什么我在这里收到错误。我遇到的问题是在add方法中。我正在使用Netbeans IDE(根据教授要求),我得到的问题是add方法。有两个错误都说'#34;找不到符号&#34 ;;一个是引用变量customers而另一个是引用变量numCustomer。我试图理解我做错了什么,而不仅仅是如何解决它。

到目前为止我所拥有的:

package homework6;

/**
 *
 * @author christian
 */

public class Homework6 {
    // Declare variables
    private int numCustomers = 0;
    private Customer customer;

    // Constructor
    public Homework6() {
        Customer[] customers = new Customer[50];
    }

    /**
     * @param args the command line arguments
     */
    public void main(String[] args) {
        System.out.println("Christian Beckman N00963294");
        System.out.println("Homework 6");
        System.out.println(); // Prints a blank line

        // Create and instance of Homework6
        Homework6 homework6 = new Homework6();
        homework6.execute(args);
    }

    private void add(Customer customer) {
        int i = 0;
        customers[i] = customer;
        i++;
        numCustomer++;
    }

    private void displayCustomers() {

    }

    private void execute(String[] args) {

    }

    private int getTotal() {

    }

    private void readFile(String filename) {

    }
}

2 个答案:

答案 0 :(得分:0)

您的变量为numCustomers,其中包含''但是您的方法是指numCustomer++;没有'

应该是:

numCustomers++;

有关

private Customer customer;

应该是:

private Customer[] customers;

在您引用客户和客户的代码中要非常小心。看起来你正在使用会议"客户"只为一个和#34;客户"对于阵列。如果这对你来说太微妙,那么考虑改为像oneCustomer和allCustomers。

答案 1 :(得分:0)

在构造函数中创建Customer个对象的数组,然后立即销毁该数组。试着像这样声明:

public class Homework6 {
    // Declare variables
    private int numCustomers = 0;
    private int i = 0;
    private Customer customer;
    private Customer[] customers;

    // Constructor
    public Homework6() {
        customers = new Customer[50];
    }
...

原因是,在方法内部声明的任何变量(在这种情况下,构造函数)都有一个称为局部范围的变量,这意味着它只能在该方法中访问。您在方法外部声明的变量具有称为全局范围的变量,这意味着可以跨类中的所有方法访问变量。

出于与上述相同的原因,每次调用add函数时,i将保持重置为0。要解决此问题,请在构造函数上方使用其他变量声明private int i = 0。然后像这样编写方法:

private void add(Customer customer) {
        customers[i] = customer;
        i++;
        numCustomers++;
    }

此外,只要您在add方法中执行numCustomer++,就应该像上面一样numCustomers++,因为您在结尾声明了numCustomers并带有's'。必须完全匹配。