Java While 循环与 Java 初学者编程中提出的挑战相关

标签 java while-loop

我正在尝试自己学习 Java 编程(没有类(class)/老师/导师/等),所以这不是家庭作业。

我的问题已在 Java Challenge for beginners: Generate random numbers in a while loop 中提到过然而,正如提出这个问题的前一位程序员所说,我在本书中的进展还不够深入,无法涵盖 ArrayList。

回答这个问题肯定会帮助大多数初学者程序员更好地理解如何编写 while 循环语句,这是一个通常很复杂的过程,特别是对于初学者来说。

问题是:编写一个 while 循环,生成 1 到 100 之间的随机数,并在生成两次相同的数字后停止循环。

您将认识到,每次运行此程序时,只会创建 1 到 100 之间的两个随机数的输出。我相信遇到此错误是由于第 17 行: equal = numberCheck ==values[i];不正确,因为这是定义 while 循环条件何时变为 true 并因此停止计算的语句。

非常感谢任何帮助。谢谢。

我的代码是:

import java.util.Random;

public class SameNumber {

    public static void main(String args[]) {

        Random rand = new Random();
        int[] values = new int[100];
        int counter = 0;
        boolean equal = false;

        for (int i = 0; i < 2; i++) {
            values[i] = rand.nextInt(100) + 1;
            System.out.println(values[i]);
            int numberCheck;
        }

        while (!equal) {
            for(int i = counter - 1; i >= 0; i--) {
                int numberCheck = values[i];
                equal = numberCheck == values[i];
             //}
                if (!equal) {
                    System.out.println(rand.nextInt(100) + 1);
                }

                for (int j = counter - 1; j >= 0; j--) {
                    if (numberCheck  == values[j]) {
                        break;
                    }
                }
            }
        }
    }
}

P.S.:我知道这可能听起来很荒谬,但是我已经研究这个问题大约一周了,并试图收集更多的研究,但我仍然无法找到正确的解决方案。我一直犹豫是否要寻求帮助,因为我担心其他程序员会用我还没有学过的方法来回答。

最佳答案

您的方法非常间接...让我们直接按照说明进行尝试:

  1. 生成新的随机数
  2. 确定您以前是否见过这个随机数
  3. 没有?记录您已看到此随机数并转到 1。
  4. 是吗?停止

那么真正的问题是,“我如何确定我以前是否见过随机数?”。

由于它是有限集,因此您可以将 boolean 数组 ( boolean seen[100] ) 初始化为 false。每当您看到数字时,请标记 seen[<number>]true 。如果seen[<number from 2>]是永远正确的,您以前已经生成过它。

使用ArrayList顺便说一句,跟踪这些事情并不是数据结构的最佳选择。当您准备好查看 Java 集合时,请查看 HashSet ,它具有恒定时间(不依赖于列表的大小)执行 contains .

关于Java While 循环与 Java 初学者编程中提出的挑战相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996290/

相关文章:

java - 我如何获得在 libGdx 中点击了 3D 世界中的哪个点

java - 显示基于 if/else 语句的对话框

java - 是否可以在替换函数中使用 OR 条件/运算符?

Python while 循环条件检查字符串

C - 为什么这个循环会重复,即使使用 getchar() 给出了正确的输入来打破它?

java - 读取 .txt 文件的元素以使用输入创建交易

java - 如何使用 java 项目在 eclipse 中调试 native jni c++ 代码

perl - 打印后的一段时间在 Perl 中是什么意思?

php - 如何使用 PHP 和 SQL 数据库来更改 HTML <h> 内容?

php - 从数据库中选择不工作