当前位置: 首页 > 知识库问答 >
问题:

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

鲍鸿波
2023-03-14

我正在尝试编写一个程序,允许在无限循环中生成随机数。如果用户按下'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时,我从while(1)开始,然后使用来自input的if语句中断循环,但这也不起作用。内部仍然有两个for循环。

多谢

共有2个答案

白侯林
2023-03-14

您需要询问循环内部的用户输入;否则,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);
        }
邵研
2023-03-14

关于first query,在do-while循环中移动您接受输入的代码行,以这种方式在每次迭代之后,它将请求输入,如果您输入'c',它将继续,否则它将被释放。关于第二个查询,如果您使用while(1)并使用if语句检查用户是否输入了'c',如果用户输入了'c',则可以使用。

 类似资料:
  • 我试图创建一个简短的基于文本的冒险游戏使用Java。 我是一个初学的程序员,所以我的方法可能不是最有效的,但我只使用了我从学校课程中学到的东西。 为什么会出现这个问题?我不知道我做错了什么。 谢了!

  • 论坛的新成员。试着搜索,但找不到任何有用的东西。我在另一个使用Java1.7的IDE上运行了这段代码,没有问题。我现在正在使用Eclipse并将java更新到1.8,并且在行“response=input.nextline();”时得到错误:java.util.NoSuchelementException。奇怪的是,我有另一个函数返回一个字符串,并使用完全相同的循环(do/while进行模式检查)

  • 所以我想让用户输入“true”或“false”来退出循环。现在,无论我输入什么,它都会退出循环。 顺便说一句,这是一个关于色彩卫士的节目

  • 我想写一个程序,把每4位数字的每一位相加。例如,我从1000开始,加上1001,千变成2,百变成0,十变成0,单位变成1。这将持续增加每个数字,直到达到9999。这是我的代码,它只输出9999。

  • 我试图在PlayerOne类中放入一个while循环,这样就可以通过用户输入来选择玩家的职业。我不知道怎么让它起作用。你能给我一个建议或提示吗?谢谢!(我想你不需要玩家类或者主类,所以我就让他们置身事外)

  • 我正在设置一个,它在用户输入整数之前一直执行。但是,按照我现在的方式,循环在输入整数后再次打印消息,然后程序正常执行。有人能建议一种方法来使输入整数后不再打印该消息吗?谢了!