我正在尝试从 0-11 生成一个唯一的随机数,并使用它为 TextBox 分配一些唯一字符的索引。这是代码
int[] previous_random = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};//initialized with invalid values
int current_random;
Random r_int = new Random();
boolean match = false;
for (int n=0;n<=11;n++)
{
gb[n] = (TextView)findViewById(IDs[n]);//assigning IDs from XML to java text boxes
}
int i = 0;
while (i<=11)
{
current_random = r_int.nextInt(11);//generating a random int from 0-11
int j =0;
while (j<=11)
{
if (current_random == previous_random[j])
{
match = true;break;//match = true shows that this random was used before to skip the loop
}
j++;
}
if(match == false)
{
gb[i].setText(randomized_final.charAt(current_random) + "\0");//randomized_final is a string not visible in current code
previous_random[i] = current_random;//*******PROBLEM HERE************
}
else
continue;
i++;
}
}
现在的问题是标有** PROBLEM HERE **的部分导致程序停止响应并导致该应用程序的 CPU 使用率超过 50% 但应用程序没有崩溃,它只是显示带有顶部栏的空白屏幕。部分应该存储新的唯一随机数,并且存储用于以后的比较,如果我删除这部分,那么代码工作正常,除了我得到重复的随机数(这不是我想要的)。
请告诉我我做错了什么。或者告诉任何替代方法来做到这一点。我也尝试过 for 循环。已经尝试了几个小时的许多替代方法!