2017-10-14 8 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

入力はEnterキーですか? – SMA

+3

解決策ではありませんが、新しいスキャナ(System.in); –

+0

ランタイムとコンパイル時の例外に関する誤解があります。 –

答えて

0

あなたはスキャナのコンストラクタに文字列を渡しているこの行の問題

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

を持っています。 javaドキュメント(Scanner(String source))によると、指定された文字列からスキャンされた値を生成する新しいScannerが返されます。あなたのプログラムの残りの部分によれば、次の行でスキャナがピックアップするための数字の文字列が提供されるべきです。

int dl = s.nextInt(); 

コンソールから入力を取得する場合は、次のようにスキャナの初期化を変更してください。 スキャナにコンストラクタがもう少しあります。the java docsをご覧ください。

Scanner s = new Scanner(System.in); 

これにより、コンソール入力ストリームがスキャナに渡されます。