【问题标题】:How do I make my program repeat according to certain circumstances?如何根据某些情况重复我的程序?
【发布时间】:2022-01-13 09:56:25
【问题描述】:
import java.util.Scanner;

public class MyFirstGame {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("Please Enter A Number: ");
        double s = scanner.nextDouble();
        double randomNumber = Math.random();
        double realNumber = randomNumber*10;
        double realerNumber = Math.round(realNumber);
        System.out.println(realerNumber);

        if(s==realerNumber) {
            System.out.println("You Win!");
        } else {
            System.out.println("Try Again...");
        }
    }
}

所以我想做的是为我的 Java 类制作一个“游戏”。我已经生成了一个 1 到 10 之间的随机数,用户必须输入一个数字,如果输入和随机数相同,他们“获胜”。如果他们输了,他们会再试一次……?首先,我完成了我什至不完全理解的所有必要的扫描仪工作。我只是复制了教授。所以程序说输入一个数字,程序会生成一个介于 0.0 和 1.0 之间的数字。我将该数字乘以 10,使其介于 1 和 10 之间。然后将数字四舍五入到最接近的整数。如果输入匹配这个数字,程序说你赢了。如果没有,它会说再试一次。

问题是如何让程序自行重复,而无需用户使用 cmd 重新启动程序?我需要重复输入、随机数生成器,然后是结果。我需要做什么?另外,我的程序怎么样?我的第二个大...是的,对...很大。但说真的,我怎样才能让它变得不那么复杂或改进它。谢谢。

【问题讨论】:

    标签: java loops repeat


    【解决方案1】:

    使用while 循环:

    long realerNumber = Math.round(realNumber);
    // first guess
    long guess = scanner.nextLong();
    while (guess != realerNumber) {
        System.out.println("Try Again...");
        // guess again
        guess = scanner.nextInt();
    }
    
    System.out.println("You Win!");
    

    已经有一个class来生成随机数,你可以用它:

    // TODO: move to constant
    int MAX = 10;
    // nextInt(int n) generates a number in the range [0, n)
    int randomNumber = new Random().nextInt(MAX + 1)
    

    【讨论】:

    • 谢谢。我不得不在 while 语句区域添加更多内容,但你让我开始了。我得到了我想要的最终结果,我很满意。
    【解决方案2】:

    只需将您的代码放入 do-while 循环

    Scanner scanner = new Scanner(System.in);
    
    do
    {
        System.out.println("Please Enter A Number: ");
        double s = scanner.nextDouble();
    
        double realerNumber = Math.round( Math.random() * 10 );
    
        System.out.println(realerNumber);
    
        if(s==realerNumber) {
            System.out.println("You Win!");
        } else {
            System.out.println("Try Again...");
        }
    }
    while(someCondition);
    

    someCondition 可以是例如一个计数器(如果你想播放 n 次,只需将计数器设置为 n 并在每次循环迭代时减少它,然后检查它是否为 0 时)或某些功能检查是否按下了某个键(如 escape

    int n = 5;
    
    do
    {
        n--;
        ...
    }
    while(n > 0);
    

    【讨论】:

      【解决方案3】:

      这将永远运行,但这是第一条评论中提到的想法

          ...
          Scanner scanner = new Scanner(System.in);
          while(true){ // add this after Scanner ... declaration
             ...
              } // end of existing else block
          } // end of while loop, so add this single brace
          ...
      

      【讨论】:

      • 为什么不while (true)? :-)
      • 你在开玩笑吗? -1?天哪。
      • 为什么不while(1==1)??
      • 我没有 -1 你,虽然你的程序并没有完全按照要求做(它一遍又一遍地生成新数字而不是坚持一个。它没有真的 这个用例很重要,但应该注意)。
      • 至于Why NOT while(1==1),与你不会使用while ((1 > 0 && 2 + 3 + 4 + 5 / 2) || 0 != 0)的原因相同...一直是true
      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多