Я работаю над программой, в которой пользователь дает два числа. Первым является число, до которого счетчик будет считать. Второй - это приращение, которое он будет делать. Программа имеет начальный номер, равный единице, и должна сложить вместе все числа, которые составляют первое заданное число. Например, пользователь вводит числа 7 и 2. Таким образом, программа должна сделать следующее: 1+3+5+7 и будет равна 16. Я не могу понять, что я делаю неправильно в своей программе.

System.out.print("Please enter your first positive number: ");
int n1 = user.nextInt();
System.out.print("Please enter your second positive number: ");
int n2 = user.nextInt();

int sum = 1;

while(sum <= n1)
{
    sum += n2;
}
System.out.println("Sum = " + sum);
0
azriel99 13 Ноя 2019 в 03:27

1 ответ

На данный момент вы останавливаетесь, когда ваша сумма превышает n1. И для каждого цикла вы добавляете n2, а не последнее значение, увеличенное на n2.

Попробуйте это, которое использует цикл for для перебора реальных значений приращения (которые увеличивают каждую итерацию):

System.out.print("Please enter your first positive number: ");
int n1 = user.nextInt();
System.out.print("Please enter your second positive number: ");
int n2 = user.nextInt();

// start your sum at zero
int sum = 0;

// loop increasing the increment value until it exceeds the users input
for(int increment = 1; increment <= n1; increment += n2) {
    sum += increment;
}
System.out.println("Sum = " + sum);
2
Jason 13 Ноя 2019 в 03:37
Это намного лучше, чем моя половинчатая попытка.
 – 
Scary Wombat
13 Ноя 2019 в 03:43
На самом деле, это не так уж сильно отличается от вашего первоначального ответа.
 – 
Jason
13 Ноя 2019 в 03:44
Спасибо! Глядя на это сейчас, это имеет смысл.
 – 
azriel99
13 Ноя 2019 в 04:00
Если этот ответ решит вашу проблему, рассмотрите возможность его принятия.
 – 
Jason
13 Ноя 2019 в 06:41