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ループでも試しました。何時間も多くの代替方法を試してきました!