做声明不接受变量

时间:2014-06-16 01:47:21

标签: java do-while

我正在尝试创建一个程序,该程序从用户获取正整数并找到最大值,直到用户输入负数。我必须使用do while循环。它不会接受语句while部分中的变量。我不明白为什么会这样,因为我检查过,我应该有正确数量的括号。

Scanner in = new Scanner(System.in);
System.out.println("Enter a number: ");

do {
   int currentnumber = 1;
   int number = in.nextInt();
   if(currentnumber < number) {
      currentnumber = number;
   }
   if(number > currentnumber) {
      currentnumber = number;
      System.out.println("Max number is: " + currentnumber);
   }
} while(number > 0);

编辑:我修复了号码问题。该程序将打印“输入一个数字:”但是当输入一个数字时它不会做任何事情

 Scanner in = new Scanner(System.in);
 System.out.println("Enter a number: ");

int number; 
do{
int currentnumber = 1;
number = in.nextInt();
    if(currentnumber < number){
        currentnumber = number;}
    if(number > currentnumber){
        currentnumber = number;
        System.out.println("Max number is: " + currentnumber);

    }
}while(number > 0);
}

}

4 个答案:

答案 0 :(得分:1)

在do块之外声明number,以便while()可以访问它

答案 1 :(得分:1)

不,因为在Java中,本地范围由{})定义。如果您在<{1}}块中声明number ,则无法在外部访问。

请注意,条件do超出了(number > 0)块。

你能做什么?你可以在do之前声明number

do-while

答案 2 :(得分:1)

要在do-while循环的条件部分中使用变量,变量必须在循环外部具有范围 - 必须在循环外定义。

int number;
do{
    int currentnumber = 1;
    number = in.nextInt();
    if(currentnumber < number) {
        currentnumber = number;
    } if(number > currentnumber) {
        currentnumber = number;
        System.out.println("Max number is: " + currentnumber);
    }
} while(number > 0);

这与任何其他循环没有什么不同。

while (number > 0) {
    int number;
    // do stuff
}

那个循环会有明显的问题。但是如果我们把它重写为:

int number = 1;
while (number > 0) {
    // do stuff 
}

问题已经消失。

同样的逻辑适用于您的do-while循环。

您在循环中声明了number,因此它只存在于循环中。为了在循环体外部使用它(包括循环的条件语句),必须在循环外声明它。

答案 3 :(得分:0)

我注意到的一件事是你在小于和大于案件中设置currentnumber。如果您尝试确定max输入值,则只需要指定该值大于当前最大值。

另一个原因&#34;什么都不做&#34;可能是因为您输入的数字小于currentnumber。在这种情况下,您的程序不会输出任何内容,但会返回接受输入。

还要考虑移动输出,要求用户在循环内输入。然后每次迭代都会重新提示用户输入。

Scanner in = new Scanner(System.in);

int currentMax = 0;
int number = 0;
do {
   System.out.println("Enter a number: ");
   number = in.nextInt();
   if(number > currentMax) {
      currentMax = number;
      System.out.println("Max number is: " + currentMax);
   }
} while(number > 0);