3

以下のコードで、スキャナーに連続して数字を入力できるのはなぜですか? doubleに入ると、コードが無限ループを引き起こすと思います。

userInput.hasNextDouble()

userInput の値はループ全体で変化しないため、常に true になります。

while 条件が無限ループにならない理由を教えてください。

 public class Testing
    {
        public static void main(String[] args) 
        { 
            System.out.println("Enter numbers: ");
            Scanner userInput = new Scanner(System.in);
            int currentSize = 0;
            while (userInput.hasNextDouble()) 

            {

                    double nextScore = userInput.nextDouble();

                    currentSize++;


            }
            System.out.println(currentSize); 
            }




        }
4

3 に答える 3

0

hasNextDouble()double が入力されているかどうかを示すメソッドです。そのコードで、ユーザーが double 以外の何か、たとえば acharまたはbooleanを入力すると、コードはループから抜け出し、 を出力しますcurrentSize。より良いことは次のようになります。

        System.out.println("Enter numbers: ");
        Scanner userInput = new Scanner(System.in);
        int currentSize = 0;
        char choice = 'c';
        while (choice != 't') 

        {

                double nextScore = userInput.nextDouble();

                currentSize++;
                System.out.println("Enter \"c\" to enter more numbers, or \"t\" to exit.");
                choice = userInput.nextChar();
        }
        System.out.println(currentSize); 
        }
于 2013-07-14T07:03:36.950 に答える