1

だから、ここにこの小さなプログラムがあり、入力不一致エラーが発生しています。コードの下にエラーメッセージを投稿します。正直なところ、エラーが表示される理由はわかりません。必要なすべての変数に正しい型が割り当てられていることを確認しました。私の理解が正しければ、予期しないものを入力しようとすると、上記のエラーが発生しますよね? ( int などではなく double )。なんらかの理由で見えないどこかで愚かな間違いを犯した可能性があるので、助けていただければ幸いです。

    Scanner sc = new Scanner(System.in);

    int enEur = 0;
    int dvaEur = 0;
    boolean bankrot = false;
    int placilo;


    while (sc.hasNextInt() || bankrot == false){
        placilo = sc.nextInt();
         if(placilo == 1){
             enEur += placilo;
         }
         else{
             enEur --;
             bankrot = test(enEur);
             dvaEur ++;
         }
     }

これが私の main() メソッドの内容です。エラーは次の行に表示されます: placilo = sc.nextInt()。上記のエラーのコピーは次のとおりです。

    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 evroSop.main(evroSop.java:16)

私が入力した入力は、基本的に、1 1 1 1 2 1... などの個別の整数の行です。さまざまな例がありますが、それらはすべて長さが異なる整数の行です。

ジョージ・チェリオ

4

2 に答える 2

1

この条件は、さらに入力がある、まだ falsewhile (sc.hasNextInt() || bankrot == false)である限り、スキャナーからの読み取りを試行し続けることを意味します。そのため、入力が不足しても破産していない場合は、次の入力がなくても次の入力を読み取ろうとするため、例外が発生します。 bankrot

条件はandであり、 orではなく、おそらくです。

于 2015-10-13T14:12:41.293 に答える
0

行を String として読み取り、int[] に分割します。

hasNext() 呼び出しの後、

String str = sc.nextLine();

この文字列を int[] に分割します

コード例:

        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
                String str = sc.nextLine();
                String strArray[] = str.split(" ");
                int intArray[] = new int[strArray.length];

               for (int i = 0; i < intArray.length ; i++) {
                   intArray[i] = Integer.parseInt(strArray[i]);
               }

               for (int j : intArray) {
                    System.out.println(j);
               }
        }

入力:

1 123 456

出力:

1

123

456

于 2015-10-13T14:05:36.060 に答える