为什么';我的Java数组列表实现是否正常工作
我正在尝试创建名为为什么';我的Java数组列表实现是否正常工作,java,Java,我正在尝试创建名为checkout1、checkout2和checkout3的ArrayList的三个实例,但我遇到了一些问题。我试图调用我的方法customer1.Add(),但它不起作用,我不知道为什么 import java.util.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; public class main {
checkout1
、checkout2
和checkout3
的ArrayList
的三个实例,但我遇到了一些问题。我试图调用我的方法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();
}
}
import java.util.*;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Collection;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args){
int MAX_SIZE=100;
签出[]签出1=新签出[最大大小];
签出1[0]。添加客户(RandCustomer());
System.out.println(checkout1.Size());
}
公共静态客户(){
Random rand=新的Random();
int items=rand.nextInt(4)+1;
退货项目;
}
}
导入java.util.*;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Collection;
导入java.util.List;
公共类结帐{
私有ArrayList客户=新ArrayList();
公共客户(int i){
加上(i);
返回;
}
public int SizeCustomer(){
返回客户。size();
}
}
谢谢。我现在已经修好了,所以看起来像这样:
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] = new CheckOut();
checkout1[0].AddCustomer(RandCustomer());
System.out.println(checkout1[0].SizeCustomer());
}
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();
}
}
import java.util.*;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Collection;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args){
int MAX_SIZE=100;
签出[]签出1=新签出[最大大小];
checkout1[0]=新签出();
签出1[0]。添加客户(RandCustomer());
System.out.println(checkout1[0].SizeCustomer());
}
公共静态客户(){
Random rand=新的Random();
int items=rand.nextInt(4)+1;
退货项目;
}
}
导入java.util.*;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Collection;
导入java.util.List;
公共类结帐{
私有ArrayList客户=新ArrayList();
公共客户(int i){
加上(i);
返回;
}
public int SizeCustomer(){
返回客户。size();
}
}
您忘记创建CheckOut
的实例并将其分配给checkout1[0]
。因此,您可能会得到一个NullPointerException
将其更改为:
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
checkout1[0] = new CheckOut();
checkout1[0].AddCustomer(RandCustomer());
您需要创建一些签出对象 这条线
CheckOut[] checkout1 = new CheckOut[MAX_SIZE];
创建一个数组,该数组可以包含对签出对象的引用,但当前
所有这些引用都是空引用
您可以通过创建一些新的签出对象来初始化数组:
for (int i = 0; i < checkout1.length; i++) {
checkout1[i] = new Checkout();
}
for(int i=0;i
您已经创建了CheckOut
的数组,初始值为null
,因此您需要在调用其metods之前循环此数组的所有实例以创建实例,如下所示:
for (int i = 0; i < checkout1.length; i++) {
checkout1[i] = new Checkout();
}
for(int i=0;i
两个问题:
- 您定义了数组并对其进行了初始化,但在使用它之前从未初始化过签出对象。所以你应该做一些类似的事情:
CheckOut[] checkout1 = new CheckOut[MAX_SIZE]; checkout1[0] = new CheckOut(); checkout1[0].AddCustomer(RandCustomer());
- 在checkout类中,您定义了SizeCustomer方法,并尝试访问如下内容: System.out.println(checkout1.Size())
System.out.println(checkout1.SizeCustomer());
也许你想在打印尺寸时编写
checkout1[0].Size()
?你应该避免说“它不起作用”,而是解释会发生什么,以及预期会发生什么。在Checkout类中没有称为Size的方法。在Checkout类中没有称为Size的方法。我的意思是,即使OP按照你说的那样做,他将无法运行代码,最终会遇到编译问题。谢谢,我正在尝试创建三个签出,其中客户根据最短的等待时间选择签出,每个客户也会生成随机数量的项目,你认为我做得对吗?
System.out.println(checkout1.SizeCustomer());