大家好我所有我正在编写一些代码并继续获得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);
}
答案 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值。
答案 1 :(得分:1)
NullPointerException
表示您正在取消引用尚未实例化的变量(指向null
的变量)。这是您对in
的声明:
Scanner in = null;
这里有一个空变量,然后你取消引用:
int input = in.nextInt();
这会导致您的NullPointerException。您需要以某种方式实例化in
Scanner in = new Scanner(System.in);