質問

私の英語:)
についてSRY Javaプログラミングに新しいイムと私は、スキャナに問題があります。私は私が使用して文字列を読んで、その後の sc.nextInt()、のIntを読んでいくつかのものを表示し、する必要があります。を示して私のものを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;
    }


}

のTyそんなにあなたの時間とヘルプ:D

役に立ちましたか?

解決

それはint型を発見し、その後、停止していますまで、

nextInt()だけで読み込みます。

あなたは、入力ストリームがまだ行に改行文字やおそらく他の非int型のデータを持っているのでnextLine()を行う必要があります。 nextLine()を呼び出すと、int型を入力すると文字列を入力する間でプレスユーザーを入力含めて、残っているものは何でもデータを読み込みます。

他のヒント

するとき、あなたが入力した値(かStringintdouble、等...)とヒット「を入力し、」('\n'別名)、改行文字は、あなたの入力の最後に追加されます。あなたはint型を入力しているのであれば、sc.nextInt()しか入力された整数を読み取り、バッファに背後'\n'を残します。だから、この問題を解決する方法は残りを読んで、それを捨てますsc.nextLine()を追加することです。あなたがプログラムのコードの1行を持っている必要があります理由はここにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top