8

私の英語については申し訳
ありません:) Javaプログラミングは初めてで、スキャナーに問題があります。Int を読み取り、いくつかのものを表示してから文字列を読み取る必要があるため、sc.nextInt();を使用します。自分のものを表示 showMenu(); 次に、文字列palabra=sc.nextLine();を読み取ろうとします。

sc.nextLine(); を使用する必要があると言われました。sc.nextInt(); の後 しかし、なぜあなたがそれをしなければならないのか分かりません:(

これが私のコードです:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int respuesta = 1;

    showMenu();
    respuesta = sc.nextInt();
    sc.nextLine(); //Why is this line necessary for second scan to work?

    switch (respuesta){
        case 1:
            System.out.println("=== Palindromo ===");
            String palabra = sc.nextLine();
            if (esPalindromo(palabra) == true)
                System.out.println("Es Palindromo");
            else
                System.out.println("No es Palindromo");
        break;
    }


}

あなたの時間と助けにとても感謝しています:D

4

2 に答える 2

10

nextInt()int が見つかるまで読み込み、その後停止します。

nextLine()入力ストリームにはまだ改行文字があり、行に他の非intデータがある可能性があるため、これを行う必要があります。int を呼び出すnextLine()と、ユーザーが int を入力してから String を入力するまでの間に押した Enter キーを含め、残っているすべてのデータが読み込まれます。

于 2010-03-15T00:03:02.423 に答える
4

値 ( 、 、 など) を入力してStringEnterintキーを押すと、入力の末尾にdouble改行文字 (別名) が追加されます。'\n'そのため、int を入力している場合、 は入力sc.nextInt()された整数のみを読み取り、'\n'バッファに残します。したがって、これを修正する方法はsc.nextLine()、残りを読み取って破棄する a を追加することです。これが、プログラムにその 1 行のコードが必要な理由です。

于 2013-07-27T05:35:13.663 に答える