JAVA:空指针异常错误

时间:2015-04-09 14:31:10

标签: java

大家好我所有我正在编写一些代码并继续获得Null指针异常,并且出于某种原因我只是打了一个精神墙。

现在我知道空指针是在它尝试使用的值为null时,但我似乎无法弄清楚如何解决问题。 (错误的行是*'d out。)

   public static void getMenuChoice(Dog s) {
      int LCV = 0;
     Scanner in = null; // create a scanner object
  do {
     System.out.println("Welcome to the Input Menu");
     System.out.println("1: Assign the name");
     System.out.println("2: Assign the owner");
     System.out.println("3: Assign the age");
     System.out.println("4: Assign the weight");
     System.out.println("5: Assign the breed");
     System.out.println("6: Assign the time");
     System.out.println("7: Display Dog Information");
     System.out.println("8: Quit");
     System.out.print("Choose a Menu Option => ");


     ****************int input = in.nextInt();*********************

     switch (input) {
        case 1:
           System.out.println("Please Enter the Dogs name");
           s.setDogName(in.next());
           break;
        case 2:
           System.out.println("Please Enter the Owners name");
           s.setOwnerName(in.next());
           break;
        case 3:
           System.out.println("Please Enter the Dogs age");
           s.setDogAge(in.nextDouble());
           break;
        case 4:
           System.out.println("Please Enter the Dogs weight");
           s.setWeight(in.nextDouble());
           break;
        case 5:
           System.out.println("Please Enter the Dogs breed");
           s.setDogName(in.next());
           break;
        case 6:
           System.out.println("Please Enter the Time");
           s.setTime(in.nextDouble());
           break;
        case 7:
           System.out.println(s);
           break;
        case 8:
           LCV = 8;
           break;
     }
  } while (LCV != 8);

}

2 个答案:

答案 0 :(得分:2)

您的扫描仪未初始化,您应该

Scanner in = new Scanner(System.in);  // instead of  Scanner in = null;

所以当你做的时候

in.nextInt();   // null.nextInt()

您将获得NullPointerException

  

public class NullPointerException 扩展RuntimeException

     

当对象尝试在对象所在的情况下使用null时抛出   需要。其中包括:

     
      
  • 调用null对象的实例方法。
  •   
  • 访问或修改空对象的字段。
  •   
  • 将null的长度视为数组。
  •   
  • 访问或修改null的插槽,就像它是一个数组一样。
  •   
  • 抛出null,就好像它是一个Throwable值。
  •   

Docs

答案 1 :(得分:1)

NullPointerException表示您正在取消引用尚未实例化的变量(指向null的变量)。这是您对in的声明:

Scanner in = null; 

这里有一个空变量,然后你取消引用:

int input = in.nextInt();

这会导致您的NullPointerException。您需要以某种方式实例化in

Scanner in = new Scanner(System.in);