我正在尝试创建一个程序,该程序从用户获取正整数并找到最大值,直到用户输入负数。我必须使用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);
}
}
答案 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);