繁体   English   中英

Java:变量已在方法中定义

[英]Java: Variable is already defined in method

我正在尝试制作一个程序,它可以在 1000-9999 之间生成一个没有重复数字的随机数。 规则是我必须将随机数标记为字符串,然后使用 while 循环来确定是否有任何数字重复。

//generating random number
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 已经在我的主要方法中定义。 有没有人知道我可以做些什么来生成一个新的随机数,直到没有一个数字重复?

您已经在line 2定义了变量answer2 ,并且在您的 while 循环中尝试重新定义变量answer2 ,即:

int answer2 = (int)answer1;

你可以这样做:

answer2 = (int)answer1;

我不确定这是否是主要问题(您可能有多个),但是 ; 不应终止 while 语句。 应该是while (..) { }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 + " ";
  }

这个问题有很多错误,令人难以置信。

但具体来说:您在同一范围内重新定义变量,这是不允许的。

 answer.toCharArray(); // here you use answer variable

而不是你的循环关闭

while(conditon);

再一次在 { } 中定义 answer 变量

String answer = answer2 + " "; // duplicate

您应该使用 if 作为条件并终止 ; 从喜欢

while(condition){
 }

并使用

 answer = answer2 + " ";

代替

 String answer = answer2 + " ";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM