Не понимаю. Вроде сумму правильно считает от 1 до 100 включительно, игнорируя числа равные 3. Но все равно 1 условие не проходит. Помогите плиз)
package com.javarush.task.pro.task04.task0407;
/*
Сумма чисел, не кратных 3
*/
public class Solution {
public static void main(String[] args) {
//напишите тут ваш код
int sum = 0;
int a = 1;
while (a <= 100)
{
if ((a%3)==0)
{
a++;
continue;
}
a++;
sum+=a;
}
System.out.print(sum);
}
}
a
присваивается значение 1. При первой итерации цикла 19 строке, переменнаяa
увеличивается на 1, и в ней уже получается значение 2. Поскольку переменнаяsum
к этому моменту всё ещё содержит 0, то получается что число 1 мы при суммировании не учитываем. Это первая ошибка. Вторая ошибка происходит на последней итерации цикла: когда числоa
, достигло значения 100, то в 12 строке, оно удовлетворяет условию цикла. а в 19 снова увеличивается на 1 и мы получаем что в нём уже содержится значение 101. Это значение прибавляется к переменнойsum
, что тоже недопустимо. Если же поменять строки 19 и 20, то всё становится на свои места: на первой итерации, когдаa
равно 1, её значение сначала прибавляется к сумме, и лишь затем увеличивается, и на последней итерации переменнаяa
, достигшая значения 100 прибавляется к сумме, после чего получает значение 101, и цикл завершается.