2015-10-28 73 views
2

我剛剛在java中開始了我的大學課程,並一直在使用Scanner類獲取此錯誤。Java掃描錯誤:線程「main」中的異常java.util.NoSuchElementException

import java.util.Scanner; 

public class InchConversion 
{ 
    public static void main (String[] args) 
    { 
     Double inches, centimeters; 
     Scanner fromKeyboard = new Scanner(System.in); 
     System.out.println("Enter Value in Inches"); 
     inches = fromKeyboard.nextDouble(); 
     centimeters = inches*2.54; 
     System.out. println(inches + " inches is equal to " + centimeters + " centimeters."); 
    } 
} 

,我不斷收到錯誤是:

Compiling InchConversion.java....... 
-----------OUTPUT----------- 
Enter Value in Inches 
Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Scanner.java:862) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextDouble(Scanner.java:2413) 
    at InchConversion.main(InchConversion.java:11) 
[Finished in 0.8s with exit code 1] 
+0

它不會提示輸入它完美對我很好

public static void main (String[] args) { Double inches, centimeters; Scanner fromKeyboard = new Scanner(System.in); System.out.println("Enter Value in Inches"); inches = Double.parseDouble(fromKeyboard.nextLine()); centimeters = inches*2.54; System.out.println(inches + " inches is equal to " + centimeters + " centimeters."); } 

輸出。 Windows 10.很高興知道它工作正常,你認爲它是一個PC的問題? – theghid

回答

4

您需要使用3.0輸入例如,因爲你明確地告訴掃描器期待浮點值,並在Java的浮動需要十進制,即使它是整數。 Workouround是:

double inches = Double.parseDouble(fromKeyboard.nextLine()); 

這樣,你告訴掃描程序來解析,也可以理解爲雙(在這種情況下,當前的行頭字符串值的Java編譯器不關心即使號碼沒有小數,它在解析過程中添加它)。所以如果你輸入20,它會自動添加小數和inches = 20.0。但是,如果你想inches = 20.1你仍然需要輸入20dot1。但至少它可以消除直覺和外來的20.0輸入。

編輯:我想你的代碼與我修復,如果你輸入1 1.0 inches is equal to 2.54 centimeters.

+0

編譯InchConversion.java ....... -----------輸出----------- 以英寸輸入值 線程「main」java中的異常。 util.NoSuchElementException:沒有發現線 \t在java.util.Scanner.nextLine(Scanner.java:1540) \t在InchConversion.main(InchConversion.java:11)​​ [,退出代碼完成在0.8S 1] – theghid

+0

由於爲了那個原因。我將不得不深入研究這個問題,因爲它看起來像一個電腦設置問題。奇怪的東西。 – theghid

相關問題