1

私はこのコードを持っています

package example;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Example {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int rep;
    int[] arraya = new int[2];
    do {
        try {
            rep = 0;
            System.out.print("input col :");
            int kol = input.nextInt();
            System.out.print("input value :");
            int val = input.nextInt();
            arraya[kol] = val;
        } catch (InputMismatchException e) {
            System.out.println("input must integer");
            rep = 1;
            input.next();
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("out of range");
            rep = 1;
        }
    } while (rep == 1);
}
}

無限ループを避けるため に追加する必要があるのはなぜinput.next();ですか?catch(InputMismatchException e);

無限ループを避けるcatch(ArrayIndexOutOfBoundsException e);必要がないのはなぜですか?input.next();

ではcatch(ArrayIndexOutOfBoundsException e);、ループは、 ?input.next();と異なる理由がなくてもうまく動作します。catch(InputMismatchException e);

4

1 に答える 1

1

整数以外の文字を入力すると、ユーザーが再度入力するのint kol = input.nextInt();を待たず、以前intに入力された文字が消費されていないため、その文字を読み込もうとするためです。

out-of-bounds を入力するとint、それ消費さintれ、次の反復で次が読み取られます。

于 2015-01-12T08:10:18.400 に答える