我无法弄清楚为什么每次循环都没有正确添加。当键入-9999时,while循环还没有输出和,这也是一个问题。
import java.util.*;
public class list
{
public static void main(String args [])
{
Scanner sc = new Scanner(System.in);
int Number, Sum = 0;
System.out.println("Enter the list of whole numbers, terminate by -9999> ");
Number = sc.nextInt();
Sum += Number;
while (Number != -9999)
{
if (Number > 1 && Number < 100)
{
Sum += Number;
Number = sc.nextInt();
}
else
System.out.println("Please enter a number between 1 and 100");
Number = sc.nextInt();
}
System.out.println("Sum is " + Sum);
}
}
答案 0 :(得分:5)
你在循环中要求一个数字可能两次。进入if
块后, 后{em} else
块。没有括号,只有第一个语句是块。而不是
else
System.out.println("Please enter a number between 1 and 100");
Number = sc.nextInt();
尝试
else
{
System.out.println("Please enter a number between 1 and 100");
Number = sc.nextInt();
}
此外,您的第一个号码会被添加两次;从while
循环之前删除第一个添加项。
此外,虽然这是合法的,但可能是您的实际要求,这一行
if (Number > 1 && Number < 100)
不接受1
或100
。您的要求可能包括同时接受1
和100
,在这种情况下,条件应为Number >= 1 && Number <= 100
。
顺便提一下,传统上Java变量以小写字母开头,而类以大写字母开头,这意味着变量Number
和Sum
应该重命名为number
和{{1}分别。
答案 1 :(得分:0)
1已修复当您计划更好地使用条件循环时,请使用do while()
2 if (Number >= 1 && Number <= 100)
内部有一个无用的sc.nextInt(),它混淆了你所有的计算
3介于1和100之间我认为Number >= 1 && Number <= 100
是您所需要的,除非您不希望应用程序接受1和100
Scanner sc = new Scanner(System.in);
int Number, Sum = 0;
System.out.println("Enter the list of whole numbers, terminate by -9999> ");
Number = sc.nextInt();
do {
if (Number >= 1 && Number <= 100)
{
Sum += Number;
}
else
System.out.println("Please enter a number between 1 and 100");
Number = sc.nextInt();
} while (Number != -9999);
System.out.println("Sum is " + Sum);
}
祝你好运