我很难理解面向对象的世界。我正在做家庭作业,我不明白为什么我在这里收到错误。我遇到的问题是在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) {
}
}
答案 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'。必须完全匹配。