我尝试创建一个名为ArrayList
,checkout1
和checkout2
的{{1}}的三个实例,但我遇到了一些问题。我试着调用我的方法checkout3
但它不起作用,我无法找出原因。
customer1.Add()
感谢。我现在已修复它,所以看起来像这样:
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class main {
public static void main(String[] args){
int MAX_SIZE = 100;
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
checkout1[0].AddCustomer(RandCustomer());
System.out.println(checkout1.Size());
}
public static int RandCustomer(){
Random rand = new Random();
int items = rand.nextInt(4) + 1;
return items;
}
}
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class CheckOut {
private ArrayList<Integer> customers = new ArrayList<Integer>();
public void AddCustomer(int i){
customers.add(i);
return;
}
public int SizeCustomer(){
return customers.size();
}
}
答案 0 :(得分:2)
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
checkout1[0].AddCustomer(RandCustomer());
您忘记创建CheckOut
的实例并将其分配给checkout1[0]
。因此,您可能获得NullPointerException
。
将其更改为:
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
checkout1[0] = new CheckOut();
checkout1[0].AddCustomer(RandCustomer());
答案 1 :(得分:1)
您需要创建一些CheckOut对象。
这一行
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
创建一个可以包含对Checkout对象的引用的数组,但是当前 所有这些引用都是空引用。
您可以通过创建一些新的Checkout对象来初始化数组:
for (int i = 0; i < checkout1.length; i++) {
checkout1[i] = new Checkout();
}
答案 2 :(得分:1)
几个问题:
您定义了数组初始化它,但您在使用之前从未初始化Checkout对象。所以你应该这样做:
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
checkout1[0] = new CheckOut();
checkout1[0].AddCustomer(RandCustomer());
在结帐课程中,您定义了SizeCustomer方法,并尝试访问:
的System.out.println(checkout1.Size());
哪个错了,编译器不满意。你应该这样称呼:
System.out.println(checkout1.SizeCustomer());
答案 3 :(得分:0)
您已创建CheckOut
数组,初始值为null
,因此您需要在调用其元数据之前循环此数组的所有实例以创建实例,如下所示:
for (int i = 0; i < checkout1.length; i++) {
checkout1[i] = new Checkout();
}