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();