JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/почему не выполняет?
Владислав
13 уровень
  • 26.09.2018
  • 1203просмотров
  • 9комментариев

почему не выполняет?

Вопрос по задаче Среднее арифметическое
Java Syntax,  5 уровень,  5 лекция
Обсуждается


Вводить с клавиатуры числа и вычислить среднее арифметическое.
Если пользователь ввел -1, вывести на экран среднее арифметическое всех чисел и завершить программу.
-1 не должно учитываться.

Примеры:
а) при вводе чисел
1
2
2
4
5
-1
получим вывод
2.8

б) при вводе чисел
4
3
2
1
-1
получим вывод
2.5

Подсказка: один из вариантов решения этой задачи, использовать конструкцию:

while (true) {
    int number = считываем число;
    if (проверяем, что number -1)
        break;
}

Требования:
  • Программа должна считывать данные с клавиатуры.
  • Программа должна выводить данные на экран.
  • После ввода -1 программа должна корректно завершить работу.
  • Если последовательно ввести: 1, 2, 2, 4, 5 и -1, программа должна вывести 2.8.
  • Если последовательно ввести: -100, 0, 100 и -1, программа должна вывести 0.0.
  • Если последовательно ввести: 1 и -1, программа должна вывести 1.0.
  • Выведенный результат должен соответствовать заданию для любых входных данных.
....
package com.javarush.task.task05.task0507; /* Среднее арифметическое */ import java.io.*; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; public class Solution { public static void main(String[] args) throws Exception { ArrayList<Integer> arr = new ArrayList<Integer>(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int i = 1; while (i != -1){ i = Integer.parseInt(reader.readLine()); arr.add(i); } double sum = 0; int nums = 0; for (int j = 0; j <arr.size() ; j++) { if (arr.get(j) != -1){ sum = sum + arr.get(j); nums ++;} } //double k = sum; double result = 0; result = sum/nums; System.out.printf("%.1f", result); // System.out.println(result); } }
0
Комментарии (9)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитро
Уровень 7
2 мая 2020, 10:00
як варінт щоб легше було розібратись, я потратив 2 дні..буду радий за критику BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); double num = Integer.parseInt(reader.readLine()); double i = 0; double p =0; double sum = 0; while (true) if (num = (-1)){ p = p+1; sum=sum+num; i = sum/p; } else { break; } System.out.println(i); } //sum = sum+num; }
0
АлександрJava Developer в Magnit
9 декабря 2019, 20:17
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); double average = 0, number; int sumNumber = 0; for(; ((number = Double.parseDouble(br.readLine())) != -1); sumNumber++) average += number; System.out.println(average / sumNumber);
0
Anton
Уровень 13
26 ноября 2019, 05:30
Надо стараться решать теми методами которые пока прошли. Успеем еще с ArrayList повозиться. Мозги "качает" как раз таки поиск решения теми способами и методами которые мы только прошли. Ну а по вашему вопросу: Либо форматирование мешает. int i = 1. Попробуйте только через цикл while (слева в условии задачи есть подсказка как проверить). while (true){ String sNumb = reader.readLine(); int i = Integer.parseInt(sNumb); if (i != -1) arr.add(i); if (i == -1) { break; } } Идея принимает. Еще убрал форматирование при выводе результата.
0
Анатолий Анатольевич Мишенин
Уровень 9
16 ноября 2019, 22:07
Слишком много лишнего, буквально в прошлом уровне была задача на сумму, эта по образу и подобию, только нужно добавить правильно счетчик чисел, и понять куда прописать операцию деления суммы на счетчик.
+1
Roma Maistru
Уровень 7
7 ноября 2019, 15:58
Немного топорный мой метод, но мне так проще показалось. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); float count = 0; //создаём счётчик float, иначе в результате округлит число int nSum = 0, nNumber = 0; while (nNumber != -1){ //цикл, стопающийся при вводе -1 nNumber = Integer.parseInt(reader.readLine());//вводим число с клавиатуры nSum+=nNumber;//условие в теле цикла, при срабатывании которого введённые числа будут прибавляться сами к себе count++;//при каждом срабатывании цикла счётчик будет увеличиваться на еденицу } float result = (nSum+1)/(count-1);//прибавляем 1 к сумме вводимых чисел(в условии говориться, что -1 не считаем). // от счётчика вычитаем 1, так как последнее число (-1) в учёт не берём) System.out.println(result); }
0
Tatyana Kotova
Уровень 17
27 октября 2019, 22:39
int i = 0; int count = 0; double middle; while (true) { int x = Integer.parseInt(reader.readLine()); if (x == -1) { break; } i += x; count++; } middle = (double) i / count; System.out.println(middle); } }
0
Photograph Pro
Уровень 20
27 сентября 2018, 13:13
а зачем так сложно?
while (per != -1) {
           sum = sum + per;
           num++;
           per = Integer.parseInt(reader.readLine());
       }
       ressult = sum / num;
       System.out.println(ressult);
0
Владислав
Уровень 13
26 сентября 2018, 20:25
Я не понимаю последнего требования, что это вообще значит?
0
--------
Уровень 40
Master
26 сентября 2018, 20:53
Попробуй форматирование убрать
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush