Я пытаюсь ответить на этот вопрос:
Разработайте программу, которая считывает список чисел, оканчивающихся на -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);
}
}
4 ответа
Переместите оператор 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. Поместите в петлю.
Вы были довольно близки, но тест 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);
}
Вы поместили if
перед циклом while
,
и у него пустой (= вообще ничего не делает).
В любом случае условие также было неправильным, поскольку Number > 0 || Number < 100
будет соответствовать всем числам. Вы хотите изменить ||
на &&
.
Это должно работать:
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);
}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.