-1

私の完全なコードはここに貼り付けられています。以下は、私の質問に関連する2つの方法です。

private static boolean playGameAgain()
{
        char playAgain = 'y';
        Scanner input = new Scanner(System.in);
        while(playAgain != 'n')
        {
                System.out.println("Go again?(y/n)");
/// PROBLEM HERE....  Somehow, it will NOT wait for INPUT. It just throws an error
                playAgain = input.next().charAt(0);
        }
        input.close();
        return (playAgain != 'y')?false:true;
}

// [Trimmed]

public static void initialize(ArrayList<String> names, ArrayList<Integer> scores)
{
        Scanner input = new Scanner(System.in);
        for (int i = 1; i <= 5; i++)
        {
                System.out.println("Enter the name for score #" + i + ":");
                names.add(input.nextLine());
                System.out.println();
                System.out.println("Enter the score for score #" + i + ":");
                while(!input.hasNextInt())
                {
                        //input.nextLine();
                        System.out.println("Please input a valid integer value for the score for #" + i + ":");        
                        if(!input.hasNextInt())
                                 input.nextLine();
                }
                scores.add(input.nextInt());
                input.nextLine();
        }
        input.close();
}

1文字の読み方をいろいろ組み合わせてみました。これは以前は機能していましたが、次を使用して1文字で読み取ることができました。

Scanner input = new Scanner(System.in);
char temp = input.next().charAt(0);

しかし、どういうわけか、私が書いたこのプログラムでは、うまくいきません。

これは、5 つのユーザー名 (文字列) と 5 つのスコア (整数) を読み取り、それらを 2 つの配列に入れるプログラムです。配列を降順に並べ替えてから、それらを出力します。それで、私が抱えている唯一の問題は、彼らがもう一度プレイしたいかどうかを尋ね、再びプレイしたいかどうかを確認するためにいくつかの文字入力を取得することです(y / n)?

できれば助けてください。私は多くの組み合わせを試しました: if (input.hasNext())、無駄に。

4

1 に答える 1