Java 为什么会出现NullPointerException&ArrayIndexOutOfBoundsException错误
在第24行为循环获取NullPointerError,在主方法上获取arrayoutofindexexception。我不知道如何解决这个问题,如果您能解释一下,我将不胜感激。请帮忙 编辑:“NullPointerError”已解决,只需要为其初始化ArrayList,但仍然无法解决“ArrayOutOfIndexException”错误Java 为什么会出现NullPointerException&ArrayIndexOutOfBoundsException错误,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,在第24行为循环获取NullPointerError,在主方法上获取arrayoutofindexexception。我不知道如何解决这个问题,如果您能解释一下,我将不胜感激。请帮忙 编辑:“NullPointerError”已解决,只需要为其初始化ArrayList,但仍然无法解决“ArrayOutOfIndexException”错误 import java.util.*; public class SnackBar { private Random randomizer;
import java.util.*;
public class SnackBar
{
private Random randomizer;
private String[] flavours;
private SnackMachine barMachine;
ArrayList<Student> students;
public SnackBar(int numStudents, int packetsBarMachine, int costPacket)
{
randomizer = new Random();
flavours = new String[] {"prawn cocktail", "tango cheese", "natural", "paprika", "salt and vinegar"};
barMachine = new SnackMachine(packetsBarMachine, costPacket);
students = new ArrayList<Student>();
for(int i = 0; i < packetsBarMachine; i++)
{
barMachine.addPack(new PackOfCrisps(randomFlavour()));
i++;
}
for(int j = 0; j < numStudents; j++)
{
students.add(new Student(randomFlavour(), barMachine));
j++;
}
}
public String randomFlavour()
{
int random = randomizer.nextInt(flavours.length);
return flavours[random];
}
public void describe()
{
System.out.println("The SnackBar has " + students.size() + " hungry students.");
System.out.println("The Snackmachine has:");
System.out.println(barMachine.countPacks("prawn cocktail") + " packets of prawn cocktail crisps,");
System.out.println(barMachine.countPacks("tango cheese") + " packets of tango cheese crisps,");
System.out.println(barMachine.countPacks("natural") + " packets of natural crisps,");
System.out.println(barMachine.countPacks("paprika") + " packets of paprika crisps,");
System.out.println(barMachine.countPacks("salt and vinegar") + " packets of salt and vinegar crisps.");
}
public void runSnackBar(int nSteps)
{
int step = 1;
while(step <= nSteps)
{
System.out.println("Time Step " + step);
describe();
int atRandom = randomizer.nextInt(students.size());
students.get(atRandom).snackTime();
step++;
}
}
public static void main(String[] args)
{
SnackBar bar = new SnackBar (Integer.parseInt(args[4]), Integer.parseInt(args[20]), Integer.parseInt(args[5]));
bar.runSnackBar(Integer.parseInt(args[30]));
}
}
首先,您应该初始化ArrayList学生列表
parseIntargs[30]也是可疑的,因为要使其不引发异常,必须提供31个命令行参数。同样的情况也适用于您在不首先检查args数组长度的情况下访问args数组元素的所有其他尝试。您的程序有真正的20个参数吗?啊,是的,这是一个愚蠢的错误。仍然在主方法上获取Arrayindexoutofbound错误,但是…@ASCH您看到我的编辑了吗?刚刚看到,谢谢您指出。你会建议我怎么做?@ASCH总是在访问args[I]Nvm之前确保args.length>I,这是我的另一个愚蠢错误。我只需要输入一个整数而不是arg。非常感谢你的帮助!