Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';我的Java数组列表实现是否正常工作_Java - Fatal编程技术网

为什么';我的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());