-6

次のプログラムが動作しない理由がわかりません。どこで間違えたのか教えてください。ありがとうございました。

import java.util.Scanner;

public class LargestNumber {
    public static void main(String[] args) {
        int[] numbers = new int[100];
        int largestNumber = 0;

        System.out.println("Enter numbers. When you want to finish, type 'finish'.");
        Scanner sc = new Scanner(System.in);

        do {
            if (sc.hasNextInt()) {
                for (int counter = 0; counter < 10; counter++)
                    numbers[counter] = sc.nextInt();
            }
            if (!sc.hasNextInt() && !sc.hasNext("finish")) {
                System.out.println("It's neither number nor 'finish'.");
            }
        }

        while (!sc.hasNext("finish"));

        for (int x : numbers) {
            if (x > largestNumber) {
                largestNumber = x;
            }
        }

        System.out.println("The largest number is: " + largestNumber);
    }
}
4

3 に答える 3

-1

ドキュメントによると:

例外: InputMismatchException - 次のトークンが Integer 正規表現と一致しない場合、または範囲外の場合

だから私はあなたが代わりにこれを行うことができると思います:

int counter = 0;
while (counter < numbers.length) {
  if (sc.hasNextInt()) {
    numbers[counter++] = sc.nextInt();
  } else {
    if (sc.hasNext("finish")) {
      sc.close();
      break;
    } else {
      System.out.println("It's neither number nor 'finish'.");
      sc.next();
    }
  }
}

for (int x : numbers) {
  if (x > largestNumber) {
largestNumber = x;
  }
}

System.out.println("The largest number is: " + largestNumber);

それが役立つことを願っています

于 2013-07-31T11:53:26.813 に答える