package com.javarush.task.pro.task04.task0412;
import java.util.Scanner;
/*
Сумма кратных чисел
*/
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int start = scanner.nextInt();
int end = scanner.nextInt();
int multiple = scanner.nextInt();
int sum = 0;
for (int i = start; i < end; i++) {
if (i % multiple == 0)
{
sum = sum + start;
}
}
System.out.println(sum);
}
}Дмитрий Варанкин
23 уровень
Не могу понять, почему данный код не работает, всегда выдает на консоли 0. Я так понимаю не разу не заходит в if в цикле, но не понятно почему.
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий Варанкин
5 июня 2024, 10:57
Спасибо, а почему такой код все равно выдает 0?
0
Денис Enterprise Java Developer
5 июня 2024, 11:43
Ты бы хоть значения старта и энда привёл, но скорее всего потому что старт опять таки равен нулю, а на 10й строке ты именно его добавляешь к сумме. i к ней не добавляется, потому как находится за пределами операции присвоения. Можно было бы объединить их скобками конечно, типа sum += (start + i) но зачем если куда проще сделать sum += i?
Я уже молчу что условие цикла у тебя заведомо неверное. Если мне нужна сумма чисел от 10 до 20, в твоём случае я посчитаю сумму от 0 до 19 включительно. А это не то что требуется по условию задачи.
Вот собственно и вся логика, только учитывай что end здесь не участвует в суммировании, если по условию он должен то поменяй строгое меньше на меньше-равно
0
Дмитрий Варанкин
5 июня 2024, 12:48
Спасибо за помощь) разобрался
0
Денис Enterprise Java Developer
4 июня 2024, 16:38
По условию нужна сумма чисел на диапазоне кратных multiple?
Если так, то как минимум на 20й строке надо старт заменить на i
Ноль у тебя выдаёт, скорее всего именно по этому, ты ведь диапазон тестируешь от 0 до чего-то там, и всегда ноль и приплюсовываешь. Если бы начинал с единицы например то выводило бы количество кратных чисел на диапазоне :)
И проверь еще условие, нужно ли включать end в диапазон или нет.
Что до записи += это синтаксический сахар. sum += 1 эквивалентно sum = sum + 1;
Это работает для всех арифметических операторов.
*=
-=
/=
0
Дмитрий Варанкин
4 июня 2024, 15:09
Увидел у многих в решении такую запись вместо sum = sum + start;
Не помню чтоб это было в какой-то лекции и не смог найти, не подскажете было ли это в лекциях, если да то в какой? или было может в доп. лекциях к уровню.
0
MasterMarg
4 июня 2024, 16:27
Это то же самое.
А почему ты к сумме прибавляешь start, если по логике должен прибавлять i. Хотя текст задания я не читал
0