【问题标题】:An array that outputs number 1-5 in random, 1-5 must be output only 2 times without repeating一个随机输出数字1-5的数组,1-5必须只输出2次不重复
【发布时间】:2022-01-15 03:17:31
【问题描述】:

代码确实输出 1 - 5,但有没有办法让每个数字只打印两次。 (仅限 1-5) Sample Output,

它确实改变并且是随机的但输出超过两次

public class Main {

public static void main(String[] args) {
    
int num;    

int[] random = new int[5]; //this code generates numbers 1–5 

int[] array = new int[11]; //array size

for(int x = 0; x < random.length; x++)

random[x] = x; //store the index as a value

for(int x = 0; x < random.length; x++) {

num = (int)(Math.random()*5);

while(random[num] == -1)

num = (int)(Math.random()*5); 

if(random[num] != -1)

array[x] = random[num]; 

random[num] = -1; 

}

for(int x = 0; x < array.length; x++)

array[x] = array[x] + 1;

for(int x = 1; x < array.length; x++)


System.out.println("A["+x+"]: "+ array[x]);

}

}

【问题讨论】:

  • 请正确格式化您的代码。在目前的形式下,由于缺少缩进和过多的换行,它很难阅读。

标签: java arrays random


【解决方案1】:

随机数组的目的是什么?它只会使事情复杂化。相反,生成一个随机数,并检查它是否已经被使用了两次。如果是,则生成另一个,如果不是,则将其放入数组中。重复直到阵列已满。另一种方法是使用数字 1-5 的 2 个副本初始化数组并进行随机排列。

【讨论】:

  • 既然你可以枚举结果中的所有数字,我建议你按照Henry的第二个建议——将数字1-5分别放入一个数组中两次,然后打乱数组
  • @Henry 我尝试了你的建议,它肯定更容易,但是给出的问题非常具体,并且我必须遵循这些准则,即生成的数组必须基于数组索引和位置索引并检查数组索引是否被占用,如果被占用,则将其输出到该位置。 (如果有道理的话)
【解决方案2】:

只需创建一个记录随机记录的变量,然后在方法或函数中使用 if else 语句来检查随机记录的值是否为当前值,然后再次设置一个变量来限制您的代码。

【讨论】:

  • 就像一个柜台对吧?我试图使用计数器,但由于有很多循环,我在放置它的位置时遇到了问题,并且计数器的值并不一致。
  • 尝试创建新数组,然后每次出现随机数时,它会检查随机数是否已经分配,​​如果是,则使用递归调用自身。如果不是,显示数字然后将随机数添加到供您参考的新数组
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2021-05-30
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多