Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:方法中已定义变量_Java_Random - Fatal编程技术网

Java:方法中已定义变量

Java:方法中已定义变量,java,random,Java,Random,我正在尝试制作一个程序,它可以在1000-9999之间生成一个随机数,并且没有重复的数字。规则是我必须将随机数标记为字符串,然后使用while循环来确定是否有任何数字重复 //generating random number double answer1 = (Math.random() * 9000)+1000; //converting answer int answer2 = (int)answer1; String answer = answer2 + " "; //Labeling

我正在尝试制作一个程序,它可以在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已经在我的主方法中定义。有没有人知道我能做些什么来生成一个新的随机数,直到没有一个随机数重复?

我不确定这是否是主要问题(你可能有多个),但是;不应终止while语句。它应该是
while(…){}
,而不是
while(…);{}

至于您关于重新定义的错误,您不能再次定义已经在更大范围内定义的变量。对于本例,第2行,
intanswer2=(int)answer1
已经定义了answer2。在while循环中,您只需再次使用变量,而无需定义它。因此,它应该是:

  while (...)
  {
     ////generating random number
     answer1 = (Math.random() * 9000)+1000;

     //converting answer
     answer2 = (int)answer1;
     answer = answer2 + " ";
  }

我不确定这是否是主要问题(你可能有不止一个问题),但是一个问题;不应终止while语句。它应该是
while(…){}
,而不是
while(…);{}

至于您关于重新定义的错误,您不能再次定义已经在更大范围内定义的变量。对于本例,第2行,
intanswer2=(int)answer1
已经定义了answer2。在while循环中,您只需再次使用变量,而无需定义它。因此,它应该是:

  while (...)
  {
     ////generating random number
     answer1 = (Math.random() * 9000)+1000;

     //converting answer
     answer2 = (int)answer1;
     answer = answer2 + " ";
  }

这个问题有太多的错误,让人难以置信


然而,特别是:你在同一个范围内重新定义变量,这是不允许的。

这个问题有太多的错误,让人难以置信


但是,特别是:您正在不允许的相同范围内重新定义变量。

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

int answer2 = (int)answer1;
你可以这样做:

answer2 = (int)answer1;

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

int answer2 = (int)answer1;
你可以这样做:

answer2 = (int)answer1;
然后你的循环就结束了

while(conditon);
然后再次在{}内定义应答变量

String answer = answer2 + " "; // duplicate

您应使用if作为条件并终止;从那时起

while(condition){
 }
和使用

 answer = answer2 + " ";
而不是

 String answer = answer2 + " ";
然后你的循环就结束了

while(conditon);
然后再次在{}内定义应答变量

String answer = answer2 + " "; // duplicate

您应使用if作为条件并终止;从那时起

while(condition){
 }
和使用

 answer = answer2 + " ";
而不是

 String answer = answer2 + " ";

你看过堆栈跟踪了吗?它告诉您哪一行有问题。以
answer.charAt(0)=answer.charAt(0)
开头的条件如何会为false?您读取堆栈跟踪了吗?它告诉您哪一行有问题。以
answer.charAt(0)=answer.charAt(0)
开头的条件怎么会为false?