在 while 循环中使用 if 语句?
Using an if statement with a while loop?
我正在尝试做这道题:
设计一个程序,读取以 -9999 结尾的数字列表并打印出输入的总和。
我正在修改程序,以便仅对 1
和 100
之间的值求和,如您所见,我已尝试执行 if
语句。但是,什么都没有改变,这部分让我很困惑。我已经坚持了很长时间,代码如下:
import java.util.Scanner;
public class Summing {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Number, Sum = 0;
System.out.println("Enter a list of whole numbers, finished by -9999");
Number = sc.nextInt();
if (Number > 0 || Number < 100);
while (Number != -9999) {
Sum = Sum + Number;
Number = sc.nextInt();
}
System.out.println("Sum is " + Sum);
}
}
你的 if 在 while 循环之前。把它放在循环中。
将 if
语句移到循环内。现在 if
语句在进入循环之前只被执行 一次 (并且它什么都不做,这要归功于紧跟在条件之后的 ;
)。您希望它用于每个值。
另请注意,我将 ||
更改为 &&
。否则,例如 101 将匹配,它不在 0 和 100 之间。最后,a = a + b
总是可以更简洁地写为 a += b
.
while (Number != -9999) {
if (Number > 0 && Number < 100) {
Sum += Number;
}
Number = sc.nextInt();
}
作为另一个风格上的变化(这几乎是普遍的惯例),您应该考虑将变量更改为小写名称。
您将 if
放在 while
循环之前,
它有一个空的(=什么都不做)。
无论如何,条件也是错误的,因为 Number > 0 || Number < 100
将匹配 all 数字。您想要将 ||
更改为 &&
。
这应该有效:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Number, Sum = 0;
System.out.println("Enter a list of whole numbers, finished by -9999");
Number = sc.nextInt();
while (Number != -9999) {
if (1 < Number && Number < 100) {
Sum += Number;
}
Number = sc.nextInt();
}
System.out.println("Sum is " + Sum);
}
你已经很接近了,但是 if 测试应该在循环中(你应该使用 {
和 }
大括号)。按照惯例 Java 变量名以小写字母开头,我更喜欢 +=
运算符来添加到 sum
。此外,要检查您的范围,您在逻辑上需要一个和(而不是一个或)。像,
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a list of whole numbers, finished by -9999");
int number = sc.nextInt();
int sum = 0;
while (number != -9999) {
if (number > 0 && number < 100) {
sum += number;
}
number = sc.nextInt();
}
System.out.println("Sum is " + sum);
}
我正在尝试做这道题:
设计一个程序,读取以 -9999 结尾的数字列表并打印出输入的总和。
我正在修改程序,以便仅对 1
和 100
之间的值求和,如您所见,我已尝试执行 if
语句。但是,什么都没有改变,这部分让我很困惑。我已经坚持了很长时间,代码如下:
import java.util.Scanner;
public class Summing {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Number, Sum = 0;
System.out.println("Enter a list of whole numbers, finished by -9999");
Number = sc.nextInt();
if (Number > 0 || Number < 100);
while (Number != -9999) {
Sum = Sum + Number;
Number = sc.nextInt();
}
System.out.println("Sum is " + Sum);
}
}
你的 if 在 while 循环之前。把它放在循环中。
将 if
语句移到循环内。现在 if
语句在进入循环之前只被执行 一次 (并且它什么都不做,这要归功于紧跟在条件之后的 ;
)。您希望它用于每个值。
另请注意,我将 ||
更改为 &&
。否则,例如 101 将匹配,它不在 0 和 100 之间。最后,a = a + b
总是可以更简洁地写为 a += b
.
while (Number != -9999) {
if (Number > 0 && Number < 100) {
Sum += Number;
}
Number = sc.nextInt();
}
作为另一个风格上的变化(这几乎是普遍的惯例),您应该考虑将变量更改为小写名称。
您将 if
放在 while
循环之前,
它有一个空的(=什么都不做)。
无论如何,条件也是错误的,因为 Number > 0 || Number < 100
将匹配 all 数字。您想要将 ||
更改为 &&
。
这应该有效:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Number, Sum = 0;
System.out.println("Enter a list of whole numbers, finished by -9999");
Number = sc.nextInt();
while (Number != -9999) {
if (1 < Number && Number < 100) {
Sum += Number;
}
Number = sc.nextInt();
}
System.out.println("Sum is " + Sum);
}
你已经很接近了,但是 if 测试应该在循环中(你应该使用 {
和 }
大括号)。按照惯例 Java 变量名以小写字母开头,我更喜欢 +=
运算符来添加到 sum
。此外,要检查您的范围,您在逻辑上需要一个和(而不是一个或)。像,
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a list of whole numbers, finished by -9999");
int number = sc.nextInt();
int sum = 0;
while (number != -9999) {
if (number > 0 && number < 100) {
sum += number;
}
number = sc.nextInt();
}
System.out.println("Sum is " + sum);
}