如何从Java中的循环中删除while(true)?

3 java infinite-loop

我听说使用while(true)是一种糟糕的编程习惯.

所以,我编写了以下代码来从用户那里获取一些数字(默认值).但是,如果用户碰巧输入-1,那么它将退出程序.

如何在没有片刻(真实)的情况下写出来?我可以想到一个条件让while循环关闭会立即被捕获而不会继续直到下一次迭代?

我现在就是这样的:

 public static void main(String[] args)
    {
        System.out.println("QuickSelect!");

        while (true)
        {
            System.out.println("Enter \"-1\" to quit.");

            int arraySize = 10;
            System.out.print("Enter the size of the array (10): ");
            String line = input.nextLine();
            if (line.matches("\\d+"))
            {
                arraySize = Integer.valueOf(line);
            }

            if (arraySize == -1) break;

            int k = 1;
            System.out.print("Enter the kth smallest element you desire (1): ");
            line = input.nextLine();
            if (line.matches("\\d+"))
            {
                k = Integer.valueOf(k);
            }

            if (k == -1) break;

            List<Integer> randomData = generateRandomData(arraySize, 1, 100);

            quickSelect(randomData, k);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ned*_*der 10

while (true)很好.收下.

如果你有一个更自然的终止条件,我会说要使用它,但在这种情况下,正如其他答案证明的那样,摆脱while (true)使代码更难理解.