【发布时间】:2019-10-06 09:37:05
【问题描述】:
我这里有以下代码:
import java.util.Random;
public class Main {
public static void main(String[] args) {
int numnovo, numeros[], j;
boolean igual;
numeros = new int[6];
Random rand = new Random();
numnovo = rand.nextInt(60)+1;
numeros[0] = numnovo;
System.out.println("Número 1: " + numeros[0]);
for(int i = 1; i < 6; i++)
{
do
{
igual = true;
numnovo = rand.nextInt(60)+1;
j=0;
while(j<=i && igual)
{
igual = (numnovo == numeros[j++]);
}
}while(igual);
numeros[i] = numnovo;
System.out.println("Número " + (i+1) + ": " + numeros[i]);
}
}
}
所以,这是我从中得到的结果之一:
numeros[0]=48
numeros[1]=31
numeros[2]=52
numeros[3]=25 - repeated
numeros[4]=18
numeros[5]=25 - repeated
然而,在分析代码时,我想它会在循环内部出现以下情况:
i=5
j=0 numeros[0]=48 false
j=1 numeros[1]=31 false
j=2 numeros[2]=52 false
**j=3 numeros[3]=25 true**
特别是在标记的行中,我假设满足 while 循环 (j
我已经为这个问题绞尽脑汁大约一天了,但无法找到解决方案,而且它发生在大约 10% 的执行中,所以它不是孤立的案例。
我试图研究“j vs i”关系,如“重复的数字是否总是接近前一个”,但在某些执行中,重复的数字将是 numeros[0] 和 numeros[5],并且在其他情况下,它可能像 numeros[0] 和 numeros[1],所以论文没有用。
我也尝试将条件从 && 更改为 ||,但 get 一点也没有改变。
我还尝试了一些不同的条件语法,如朝着相反的方向(使用 false 语句而不是 true),以及不同的循环而不是 Do-While,但仍然没有运气。
那么...这里有什么帮助吗?
【问题讨论】:
-
一点建议,把变量名改成英文会帮助很多人更好地帮助你
-
我猜你可以使用
Set?