2017-10-14 185 views
-2

我遇到掃描儀問題。當我編譯它時,沒有問題。但是當我想運行這個程序時,我得到一個異常。你們能解釋一下這個問題的原因嗎?Java掃描儀異常

import java.util.Scanner; 
public class CiagArytmetyczny { 

    public static void main(String[] args) { 
     Scanner s = new Scanner("System.in"); 
     System.out.println("Podaj dlugosc ciagu: "); 
     int dl = s.nextInt(); 
     int element = 2; 

     for(int i=1; i<=dl; i++) { 
      element=element+3; 
      System.out.println(element); 

     } 
    } 
} 

Podaj dlugosc ciagu:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:864) 

    at java.util.Scanner.next(Scanner.java:1485) 

    at java.util.Scanner.nextInt(Scanner.java:2117) 

    at java.util.Scanner.nextInt(Scanner.java:2076) 

    at CiagArytmetyczny.main(CiagArytmetyczny.java:8) 

過程完成。

+0

輸入是輸入密鑰? – SMA

+3

不是解決方案,但它應該是'new Scanner(System.in);' –

+0

您似乎對運行時和編譯時異常有誤解 –

回答

0

你在這一行

Scanner s = new Scanner("System.in"); 

你傳遞一個字符串到掃描儀的構造有問題。根據java文檔(Scanner(String source)),將返回一個新的掃描程序,該掃描程序會生成從指定字符串掃描的值。根據你的程序的其餘部分,應該爲掃描器提供一個帶有數字的字符串,以便在下面一行中找到。

int dl = s.nextInt(); 

如果您打算從控制檯獲取輸入信息,請按如下方式更改掃描儀初始化。 Scanner還有幾個構造函數,我建議你看看the java docs

Scanner s = new Scanner(System.in); 

這將給控制檯輸入流到掃描儀。