我的代码导致出现此错误。
这是我的代码:
sbt package
这就是结果。一个错误: 输入模型:线程中的异常" main"显示java.lang.NullPointerException 在car.main(car.java:10)
答案 0 :(得分:3)
您已经定义了Scanner对象。使用Scanner对象的实例并设置模型的值。您可以尝试使用v.next()
,而不是使用System.console()import java.util.*;
public class car {
public static void main(String[] args) throws java.io.IOException {
Scanner v = new Scanner(System.in);
String model = new String();
double cost = 0;
System.out.print("Enter model: ");
//model = System.console().readLine();
model = v.next();
if (model == "GL") {
cost = 420000;
}
if (model == "XL") {
cost = 3398000;
}
System.out.print("Car phone: ");
char phone = (char) System.in.read();
if (phone == 'W') {
cost = cost + 40000;
}
System.out.print("Full or installment: ");
char paid = (char) System.in.read();
if (paid == 'F') {
cost = cost - 0.15 * cost;
}
System.out.print("Cost: " + cost);
}
}
输出:
Enter model: GL
Car phone: W
Full or installment: Cost: 40000.0
答案 1 :(得分:0)
似乎这是空的:
System.console()
因此调用readLine()就意味着在null上调用方法。
您可能希望在System.in上使用扫描仪代替I / O.
答案 2 :(得分:0)
问题出在以下几行:
model = System.console().readLine();
当你调用readLine()时,System.console()为null - 这就是为什么你得到一个NullPointerException。您需要做的就是使用Scanner.nextLine()方法,即将此行替换为:
model = v.nextLine();
答案 3 :(得分:-1)
System.console()
可以返回null。见javadoc
当您通过IDE运行java程序时,控制台将不可用,在这种情况下System.console()
返回null
。当从termainl运行java程序时,System.console()
不会返回null
因此,最好先检查一下null