如何修复NullPointerException错误

时间:2015-01-10 21:31:10

标签: java arrays nullpointerexception

我正在尝试编写一个程序,让用户将类的大小输入到数组中,然后找到所有类的平均值。

当我运行程序时,它打印出我输入到数组中的东西,但它给了我一个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);
        }
}

2 个答案:

答案 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")))