Java:变量已在方法中定义

时间:2014-04-18 06:02:12

标签: java random

我正在尝试制作一个程序,该程序在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方法中定义。有没有人知道如何生成一个新的随机数,直到没有数字重复?

4 个答案:

答案 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 + " ";