2015-07-11 188 views
1

我得到这个错误,因为我的代码。错误:线程“主”中的异常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)

回答

0

问题是与以下行:

model = System.console().readLine(); 

当时你调用readLine(),System.console()是空的 - 因此你得到一个NullPointerException。您只需使用Scanner.nextLine()方法,即将此行替换为:

model = v.nextLine(); 
+0

非常感谢!它帮助我消除了错误,我会牢记这一点。现在是组织我的代码的时候,我可以得到我想要的输出。再次谢谢你! –

+0

没问题 - 很高兴帮助! – priboyd

0

看来,这是空:

System.console() 

所以调用readLine()就意味着调用null方法。

您可能希望在System.in上使用扫描仪来代替I/O。

+0

嗨,先生,谢谢。但我无法理解我需要做什么。如果你不介意,我可以要求一个特定的代码,我需要偶然或添加?非常感谢你 –

-1

System.console()可以返回null。请参阅javadoc

当您通过IDE运行java程序时,控制台将不可用,在这种情况下,System.console()返回null。当Java程序从termainl运行,那么System.console()不返回null

所以它始终是最好的做法,以检查null

+0

答案解释了问题的原因,但可以通过给用户一些指导如何解决问题来扩展它...... – priboyd

3

您已经定义扫描对象。使用Scanner对象的实例并设置模型的值。而不是做System.console的(),您可以尝试v.next()

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 
+0

非常感谢! model = v.next();工作。但是我没有得到我想要的输出,但我现在可以处理它。谢谢谢谢! –

相关问题