我正在尝试制作一个程序,该程序在1000-9999之间产生一个没有重复数字的随机数。规则是我必须将随机数标记为字符串,然后使用while循环来确定是否有任何数字重复。
//生成随机数 double answer1 =(Math.random()* 9000)+1000;
//converting answer
int answer2 = (int)answer1;
String answer = answer2 + " ";
//Labeling arrays
answer.toCharArray();
//**NEW** checking random number
while (answer.charAt(0) == answer.charAt(0) || answer.charAt(0) == answer.charAt(1) || answer.charAt(0) == answer.charAt(2) || answer.charAt(0) == answer.charAt(3) || answer.charAt(1) == answer.charAt(1) || answer.charAt(1) == answer.charAt(2) || answer.charAt(1) == answer.charAt(3) || answer.charAt(2) == answer.charAt(2) || answer.charAt(2) == answer.charAt(3) || answer.charAt(3) == answer.charAt(3)); //you have my apologies
{
////generating random number
double answer1 = (Math.random() * 9000)+1000;
//converting answer
int answer2 = (int)answer1;
String answer = answer2 + " ";
}
我知道while参数非常长,但有必要确保没有重复的数字。我假设我可以重新生成一个新的随机数并在while循环中再次测试它,但我得到的错误是变量answer1,answer和answer2已在我的main方法中定义。有没有人知道如何生成一个新的随机数,直到没有数字重复?
答案 0 :(得分:4)
您已经在answer2
中定义了变量line 2
,并且在您的while循环中,您尝试重新定义变量answer2
,即:
int answer2 = (int)answer1;
你可以这样做:
answer2 = (int)answer1;
答案 1 :(得分:1)
我不确定这是否是主要问题(你可能有不止一个),但是;不应该终止while语句。它应该是while (..) { }
,而不是while (..); { }
。
至于有关重新定义的错误,您无法再次定义已在较大范围中定义的变量。对于此实例,第2行int answer2 = (int) answer1
已定义了answer2。在while循环中,您只需再次使用该变量,而无需定义它。所以它应该是:
while (...)
{
////generating random number
answer1 = (Math.random() * 9000)+1000;
//converting answer
answer2 = (int)answer1;
answer = answer2 + " ";
}
答案 2 :(得分:0)
这个问题有很多错误,令人难以置信。
但具体而言:您正在重新定义不允许的相同范围内的变量。
答案 3 :(得分:0)
answer.toCharArray(); // here you use answer variable
并且比你的循环关闭
while(conditon);
再次在{}
中定义答案变量String answer = answer2 + " "; // duplicate
你应该使用if为条件并终止;从而喜欢
while(condition){
}
并使用
answer = answer2 + " ";
而不是
String answer = answer2 + " ";