Здравствуйте. Задачу решил, но в процессе возник вопрос. Почему double/int выдаёт ошибку, а при int/double пропустило решение.
Алексей Гарькин
11 уровень
Дайте пожалуйста пояснение.
Решен
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #885613
15 ноября 2021, 17:33
все переменные для вычисления среднего значения сделал double, т.е.:
double = double / double
0
Алексей Гарькин
15 ноября 2021, 13:31
public class Solution {
public static void main(String[] args) throws Exception {
//напишите тут ваш код
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
int count=0;
double sum=0;
double rez=0;
while(true) {
int x=Integer.parseInt(reader.readLine());
sum=sum+x;
if(x==-1){
break;
}
count++;
rez=sum/count;
}
System.out.println(rez);
}
}
Вот такой вариант валидатор считает ошибочным.
0
Васильtrainee в Kindgeek
15 ноября 2021, 13:45
в этом коде у вас проблема в том, что вы переменную х считываете в цикле. И она будет считываться бесконечно.
Вынесите строку
выше цикла
0
Алексей Гарькин
15 ноября 2021, 14:10
В подсказке к заданию именно такая конструкция. И если я вынесу эту строчку за пределы цикла, то ввести можно будет только одну переменную. А по условию их n-ое количество. Пока не введём -1. Валидатор ругался на строчку с делением.
0
Васильtrainee в Kindgeek
15 ноября 2021, 14:28
Я вас понял, код вполне рабочий.
Возможно дело в инициализации переменных. Я не могу найти статью, в которой я это читал, но суть такова, что double and float инициализируются как
double х = 0.0;
float у = 0.0;
или:
double х = 0D;
float у = 0L;
+1
Васильtrainee в Kindgeek
15 ноября 2021, 14:38
вот этот код:
равнозначен вот этому:
+1
Дмитрий Петров Backend Developer
15 ноября 2021, 18:29
еще можно так
0
hidden #2033841
15 ноября 2021, 12:34
Видимо вы сначала объявили int, а затем double.
0
Васильtrainee в Kindgeek
15 ноября 2021, 12:26
прикрепите код, так будет понятнее.
0
Алексей Гарькин
15 ноября 2021, 12:57
код не даёт прикрепить, т.к. задача решённая. Просто для себя хочу понять, если все переменные объявлены корректно возможно такое деление. double/int.
0
hidden #598481
15 ноября 2021, 13:18
Напиши в комментарии тот код, который валидатор считает ошибочным, чтобы было понятно о чем идет речь.
Деление возможно, но у валидатора, очевидно, были свои причины, т.е. ты что-то не учел
0