错误:线程" main"中的异常显示java.lang.NullPointerException

时间:2015-07-11 09:45:07

标签: java exception nullpointerexception main

我的代码导致出现此错误。

这是我的代码:

sbt package

这就是结果。一个错误: 输入模型:线程中的异常" main"显示java.lang.NullPointerException     在car.main(car.java:10)

4 个答案:

答案 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