0

Java で次のエラー メッセージが表示されます

Exception in thread "main" 

    java.lang.StringIndexOutOfBoundsException: String index out of range: 0

ここに私のコードがあります -

public static void main(String[] args) {

    double gissade = 70;
    int input;
    java.util.Scanner in = new java.util.Scanner(System.in);

    char spelaIgen = 'j';
    // char input2;

    int antal = 1;

    while (spelaIgen == 'j') {
        System.out.print("gissa ett number?");
        Input = in.nextInt();

        if (input < gissade) {
            System.out.println("du har gissat för lågt försök igen");
            antal++;
        } else if (input > gissade) {
            System.out.println("du har gissat för högt försök igen");

            antal++;
        }
        if (input == gissade) {
            System.out.println("du har gissat rätt");
            System.out.println("efter " + antal + " försök");
        }

        System.out.println("vill du försöka igen? j/n");
        char input2 = in.nextLine().charAt(0);
        // String s1=in.nextLine();
        // char c1=s1.charAt(0);

        // if (input=='n');
        // System.exit(0);

    }
}
4

1 に答える 1

4

これはnextInt()、newLine を消費しないため、実行しようとすると空の文字列が返され、readLine()実行しようとするためです。

"".charAt(0);

あなたの例外をスローします。

nextLine()の後にエクストラを追加してみてくださいnextInt()

常に を使用しnextLine()、取得した文字列を解析することをお勧めします。intたとえば、次のようにすると取得できます。

String intInput;
do {
  System.out.print("gissa ett nummer?");
  intInput = in.nextLine();
while(!intInput.matches("\\d+"));
int number = Integer.parseInt(intInput);

これは、有効な数値を入力するまで繰り返されます。

于 2012-07-18T12:33:19.823 に答える