Error: Exception in thread "main" java.lang.NullPointerException
Error: Exception in thread "main" java.lang.NullPointerException
我的代码出现此错误。
这是我的代码:
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();
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);
}
}
这就是结果。一个错误:
输入模型:线程异常 "main" java.lang.NullPointerException
在 car.main(car.java:10)
这个好像是空的:
System.console()
所以在它上面调用 readLine() 意味着在 null 上调用一个方法。
您可能想在 System.in 上使用扫描仪,因为 I/O。
System.console()
可以 return 为空。见 javadoc
当您通过 IDE 运行ning java 程序时,控制台将不可用,在这种情况下 System.console()
returns null
。当 java 程序是来自 termainl 的 运行 时,那么 System.console()
不会 return null
所以最好检查 null
您已经定义了扫描仪对象。使用 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
问题出在以下行:
model = System.console().readLine();
在您调用 readLine() 时,System.console() 为空 - 因此您会收到 NullPointerException。您需要做的就是使用 Scanner.nextLine() 方法,即将这一行替换为:
model = v.nextLine();
我的代码出现此错误。
这是我的代码:
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();
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);
}
}
这就是结果。一个错误: 输入模型:线程异常 "main" java.lang.NullPointerException 在 car.main(car.java:10)
这个好像是空的:
System.console()
所以在它上面调用 readLine() 意味着在 null 上调用一个方法。
您可能想在 System.in 上使用扫描仪,因为 I/O。
System.console()
可以 return 为空。见 javadoc
当您通过 IDE 运行ning java 程序时,控制台将不可用,在这种情况下 System.console()
returns null
。当 java 程序是来自 termainl 的 运行 时,那么 System.console()
不会 return null
所以最好检查 null
您已经定义了扫描仪对象。使用 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
问题出在以下行:
model = System.console().readLine();
在您调用 readLine() 时,System.console() 为空 - 因此您会收到 NullPointerException。您需要做的就是使用 Scanner.nextLine() 方法,即将这一行替换为:
model = v.nextLine();