【问题标题】:random numbers previously established (java)先前建立的随机数(java)
【发布时间】:2013-12-02 16:35:46
【问题描述】:

以下代码显示了 4 个 int 变量:

  int xy1 = 724329;
  int xy2 = 714385;
  int xy3 = 715440;
  int xy4 = 696492;

我假装编写一个应用程序,通过打开它,在 Java 控制台上随机显示其中一个数字(不是它们之间的数字)。我知道Math.Random 类可以用来解决这类问题,但我不知道这样做的正确方法是什么。

那么,谢谢。

【问题讨论】:

  • 将这些值放入一个数组中,调用 nextInt() 到一个 Random 对象并使用该值访问该数组。试着想出一个代码来做到这一点;如果遇到问题,请在此处提问。

标签: java swing netbeans random


【解决方案1】:

听起来你只是想要一个可能值的集合,以及一个介于 0 和 3 之间的索引:

int[] values = { 724329, 714385, 715440, 696492 };
Random random = new Random(); // Ideally initialize once for the entire app
int index = random.nextInt(4);
int value = values[index];

【讨论】:

  • 为什么不压缩成int value = values[random.nextInt(4)];?将index 保留在范围内有点烦人。
  • @Bathsheba:它使代码更清晰,IMO。在我自己的代码中,我可能会这样做 - 但我试图向 OP 解释代码,额外的变量会有所帮助。此外,这可能在一个非常小的范围内,因此额外的解释变量不会受到伤害。你宁愿我用int value = new int[] { 724329, 714385, 715440, 696492 }[new Random().nextInt(4)];吗?
  • 单线由于可维护性而引起了人们的注意,并且分离程序数据也很好。我也不确定是否要不断初始化Random。所以这一步走得太远了。
  • @Bathsheba:我也不会持续初始化Random,因此答案中的注释。但是你同意对于一个新手来说,分离这两个操作(生成索引并使用它)可以简化事情吗?始终牢记观众。
【解决方案2】:

将它们放入一个数组中,并使用 Random 选择一个介于 0-3 之间的数字,并将其用作从数组中选择值的键。

【讨论】:

    【解决方案3】:

    试试这个。

    这一行

    r.nextInt(nums.length)
    

    选择一个从 0 到 nums.length-1 的整数。

    然后我从 nums 数组中打印出随机选择的数字。 我重复这 20 次只是为了演示。

    import java.util.Random;
    
    
    public class Test015 {
    
        public static void main(String[] args) {
            int[] nums = {724329, 714385, 715440, 696492};
            Random r = new Random();
            for (int i=0; i<20; i++){
                int index = r.nextInt(nums.length);
                System.out.println("Number randomly chosen: " + nums[index]);
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多