2015-07-11 214 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();工作。但是我沒有得到我想要的輸出,但我現在可以處理它。謝謝謝謝! –

相關問題