繁体   English   中英

Java - 通过用户输入退出 do-while 循环

[英]Java - get out of the do-while loop with an input of user

我正在尝试编写一个允许在无限循环中生成随机数的程序。 如果用户按“c”,它将退出循环。 但是循环只在我按下 c 时开始,它应该在之前开始,当我按下“c”时它应该停止。

import java.util.Random;
import java.util.Scanner;

public class main{

    public static void main (String[] args) {

        Random rand = new Random();

        int[] randNumber = new int[100];

        Scanner scanner = new Scanner(System.in);
        char c = scanner.next().charAt(0);

        do {
            for (int i = 0; i <= 99; i++) {
                randNumber[i] = rand.nextInt(100);
            }

            for (int i = 0; i < 99; i++) {
                if (randNumber[i] < randNumber[i + 1]) {
                    System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
                } else if (randNumber[i] > randNumber[i + 1]) {
                    System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
                } else if (randNumber[i] == randNumber[i + 1]) {
                    System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
                } else {
                    System.out.println("Wrong!");
                }
            }
        } while (c == 'c');
    }
}

另外,我想如何仅使用 while 循环而不是 do-while 循环来执行此程序。 当我只用while(1)开始时,然后用输入中的 if 语句打破循环,但这也不起作用。 里面还有两个for循环。

非常感谢

关于第一个查询,移动您在 do-while 循环中输入的代码行,这样每次迭代后它都会要求输入,如果您输入“c”,它将继续,否则它将中断。 关于第二个查询,如果您使用 while(1) 并使用 if 语句检查用户输入的“c”并在用户输入“c”时中断,它应该可以工作。

您需要在循环内询问用户输入; 否则, c永远不会改变。

        Random rand = new Random();

        int[] randNumber = new int[100];

        Scanner scanner = new Scanner(System.in);
        
        // Just set it to 'c' as default so it enters the loop at least once. IMO this is better than an infinite loop with breakout or having another default value for c and checking it, or using a do while loop
        char c = 'c';

        while (c == 'c') {
            for (int i = 0; i <= 99; i++) {
                randNumber[i] = rand.nextInt(100);
            }

            for (int i = 0; i < 99; i++) {
                if (randNumber[i] < randNumber[i + 1]) {
                    System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
                } else if (randNumber[i] > randNumber[i + 1]) {
                    System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
                } else if (randNumber[i] == randNumber[i + 1]) {
                    System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
                } else {
                    System.out.println("Wrong!");
                }
            }

            // Ask for the next input
            char c = scanner.next().charAt(0);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM