package com.javarush.task.pro.task04.task0403;
import java.util.Scanner;
/*
Суммирование
*/
public class Solution {
private static int cur = 0;
private static int sum = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
boolean isEnter = false;
while (!isEnter)
{
while (sc.hasNextInt()) {
sum += sc.nextInt();
}
isEnter = sc.nextLine().equals("ENTER") ? true : false;
}
System.out.println(sum);
}
}Cromwell #3275525
4 уровень
Решение отрабатывает корректно, но проверку на сайте не проходит, можете подсказать, в чем дело?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #3303140
5 января 2024, 15:06
Не делай переменную sum статической, сделай её локальной внутри main. Удали лишние переменные cur и sc2.
Тернарный оператор тоже не нужен, equals и так возвращает true или false
+1
Cromwell #3275525
5 января 2024, 15:12
Так это же влияет на "чистоту" кода, но не на функционал. Чекер же проверяет только функционал, или я ошибаюсь?
0
Cromwell #3275525
5 января 2024, 15:16
Вопрос по функционалу, скорее всего.
0
hidden #3303140
5 января 2024, 15:27решение
Статическая переменная - это именно неправильный функционал, а не просто прихоть валидатора. При выполнении проверки несколько тестов будут выполнены в одном рантайме, несколько раз вызывая твой метод мейн. А поскольку переменная статическая, то она не будет обнуляться между вызовами, и накопит сумму значений от всех тестов. Поэтому все тесты после первого не пройдут проверку. Поэтому привыкай использовать статические только там, где это требуется.
Ты мог бы конечно обнулять её первой командой в мейне, но какой в этом смысл, если проще её сразу там и объявить.
+2
Cromwell #3275525
5 января 2024, 15:37
Большое спасибо!
0