简体   繁体   English

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

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

I am trying to write a program that allows generate random numbers inside a infinite loop.我正在尝试编写一个允许在无限循环中生成随机数的程序。 If the user press 'c' it will get out of loop.如果用户按“c”,它将退出循环。 But the loop only starts when I press c, it should start before and it should stop when I press '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');
    }
}

Also I would like to how can I do this program only using while loop instead of do-while loop.另外,我想如何仅使用 while 循环而不是 do-while 循环来执行此程序。 When I was doing with only while I started with while(1) then break the loop with if statements from input, but that didn't work neither.当我只用while(1)开始时,然后用输入中的 if 语句打破循环,但这也不起作用。 Inside still there is two for loops.里面还有两个for循环。

Many thanks非常感谢

Regarding first query move the lines of codes where you are taking input inside the do-while loop, in this way after each iteration it will ask for a input and if you enter 'c', it will continue else it will break free.关于第一个查询,移动您在 do-while 循环中输入的代码行,这样每次迭代后它都会要求输入,如果您输入“c”,它将继续,否则它将中断。 Regarding second query, if you use while(1) and check for user input for 'c' using if statements and breaking out if user inputs 'c', it should work.关于第二个查询,如果您使用 while(1) 并使用 if 语句检查用户输入的“c”并在用户输入“c”时中断,它应该可以工作。

You need to ask for user input inside of your loop;您需要在循环内询问用户输入; otherwise, c never changes.否则, 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