我正在尝试编写一个程序,让用户将类的大小输入到数组中,然后找到所有类的平均值。
当我运行程序时,它打印出我输入到数组中的东西,但它给了我一个NullPointerException
。
代码:
public void getinput() { //
String dog="dog";
boolean done=true;
int x=0;
int avg=0;
int z=0;
Scanner scan = new Scanner(System.in);
String [] cs = new String [100];
while(done){
System.out.println("Enter the size of one class. When you are done, enter 'quit'");//ask for class sizes
dog=scan.nextLine();
cs[x]=dog;
x++;
if(dog.equalsIgnoreCase("Quit")){
done=false;
}
}
for(z=0;z<cs.length;z++) {
if (!(cs[z].equalsIgnoreCase("quit"))&& !(cs[z]==null)){
System.out.print(cs[z]+", ");
}
}
for(z=0;z<cs.length;z++) {
if (!(cs[z].equalsIgnoreCase("quit"))&& !(cs[z]==null)){
avg=Integer.parseInt(cs[z])+avg;
System.out.println("");
System.out.println("The average number of students in each classroom is "+avg);
}
}
答案 0 :(得分:1)
另一个更简单的解决方案是首先使用字符串反转条件,因为equalsIgnoreCase
已经处理了null的可能性:
if ("quit".equalsIgnoreCase(cs[z])){
这样你就会知道代码的这一部分不会抛出NullPointerException。
答案 1 :(得分:0)
如果cs[z]
可以为null,则应交换条件的顺序,因为cs[z].equalsIgnoreCase("quit")
在NullPointerException
为空时会抛出cs[z]
:
if (cs[z]!=null && !(cs[z].equalsIgnoreCase("quit")))