簡體   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