如何修复 NullPointerException 错误
how to fix NullPointerException error
我正在尝试编写一个程序,让用户将他们的 class 的大小输入一个数组,然后找到所有 classes 的平均值。
当我 运行 程序时,它打印出我输入到数组中的内容,但随后它给了我一个 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);
}
}
如果 cs[z]
可以为 null 你应该交换条件的顺序,因为当 cs[z]
为 null 时 cs[z].equalsIgnoreCase("quit")
会抛出 NullPointerException
:
if (cs[z]!=null && !(cs[z].equalsIgnoreCase("quit")))
另一个更简单的解决方案是首先使用字符串反转条件,因为 equalsIgnoreCase
已经处理了空可能性:
if ("quit".equalsIgnoreCase(cs[z])){
这样你就会知道这部分代码不会抛出 NullPointerException。
我正在尝试编写一个程序,让用户将他们的 class 的大小输入一个数组,然后找到所有 classes 的平均值。
当我 运行 程序时,它打印出我输入到数组中的内容,但随后它给了我一个 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);
}
}
如果 cs[z]
可以为 null 你应该交换条件的顺序,因为当 cs[z]
为 null 时 cs[z].equalsIgnoreCase("quit")
会抛出 NullPointerException
:
if (cs[z]!=null && !(cs[z].equalsIgnoreCase("quit")))
另一个更简单的解决方案是首先使用字符串反转条件,因为 equalsIgnoreCase
已经处理了空可能性:
if ("quit".equalsIgnoreCase(cs[z])){
这样你就会知道这部分代码不会抛出 NullPointerException。