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

кто подскажет что не так?

Вопрос по задаче Среднее такое среднее
Java Syntax,  4 уровень,  16 лекция
Решен


Ввести с клавиатуры три числа, вывести на экран среднее из них.
Т.е. не самое большое и не самое маленькое.
Если все числа равны, вывести любое из них.

Требования:
  • Программа должна считывать числа c клавиатуры.
  • Программа должна выводить число на экран.
  • Программа должна выводить среднее из трех чисел.
  • Если все числа равны, вывести любое из них.
  • Если два числа из трех равны, вывести любое из двух.
....
package com.javarush.task.task04.task0441; /* Как-то средненько */ import java.io.*; public class Solution { public static void main(String[] args) throws Exception { BufferedReader reader= new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(reader.readLine()); int b = Integer.parseInt(reader.readLine()); int c = Integer.parseInt(reader.readLine()); int min = Math.min(a, Math.min(b,c)); int max = Math.max(a, Math.max(b,c)); int half = a+b+c -(min + max) ; if (a==b && b==c){ System.out.println(a); }else if (half> 0){ System.out.println(half); }else if (a==b || a==c){ System.out.println(a); }else if (b==c ){ System.out.println(b); }else { System.out.println("fail"); } //напишите тут ваш код } }
0
Комментарии (10)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Jeckstar
Уровень 22
23 декабря 2018, 12:15
if (b>=a && b<=c || b<=a && b>=c){ System.out.println(b); } else if (a>=b && a<=c || a<=b && a>=c){ System.out.println(a); } else if (c>=a && c<=b || c<=a && c>=b){ System.out.println(c); } }
0
Сергеев Виктор
Уровень 40
Master
4 декабря 2018, 18:10
else { System.out.println("fail"); } это где в условии написано? для теста -100 -115 -134
0
Roman
Уровень 16
4 декабря 2018, 18:18
import java.io.*;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader= new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(reader.readLine());
        int b = Integer.parseInt(reader.readLine());
        int c = Integer.parseInt(reader.readLine());

        int min = Math.min(a, Math.min(b,c));
        int max = Math.max(a, Math.max(b,c));

        int half = a+b+c -(min + max) ;


        if (half!= 0){
            System.out.println(half);
        }else if (a==b && b==c){
            System.out.println(a);
        }else if (a==b || a==c){
            System.out.println(a);
        }else if (b==c ){
            System.out.println(b);
        }
        //напишите тут ваш код
    }
}
0
Roman
Уровень 16
4 декабря 2018, 18:20
это была изначальная версия, а System.out.println("fail") писал чтоб найти какие числа не работают Но и с таким кодом не работает. Пожалуйста, подскажите почему
0
Сергеев Виктор
Уровень 40
Master
4 декабря 2018, 18:51
100 200 150
0
hidden #598481
Уровень 27
4 декабря 2018, 19:05
Роман, ответь, пожалуйста на один отвлеченный вопрос. Чему равно значение твоей переменной half для случая, когда у нас есть одна или две пары одинаковых чисел? Можно сначала сказать, чему равен max, min, sum и потом уже чему равна half (я бы сказал middle). В трех кейсах: все три числа равны, два одинаковых числа меньше третьего, два числа больше третьего. После ответа на предыдущий вопрос скажи, зачем нужна хоть одна проверка (блок if) в коде? Если очень хочется, можно протестировать своей код с такими числами (в любом порядке):
0
1
-1
или с любое положительное число любое отрицательное число ноль
+1
Roman
Уровень 16
4 декабря 2018, 19:38
Спасибо. Добавил условий и все норм. Не учел этот вариант. Иногда думаешь вроде все учтено, но всегда может быть что-то не так))
0
hidden #598481
Уровень 27
4 декабря 2018, 20:33
> Добавил условий Нет, ты меня совсем не понял. Я пытался дать тебе понять, что ты можешь удалить ВСЕ условия без какого-то ущерба коду. Когда ты ищешь максимум и минимум например для чисел 1, 1, 2, максимум понятно будет равен двум, а минимум единице. Не первой единице, не второй единице, а просто единице. А что получится, если от 1+1+2 отнять макс и мин? Та-дам, снова единица. Как раз то, что нужно вывести. То есть тебе нужно было просто рассчитать half и вывести его. Все остальное было бессмысленно.
+1
Roman
Уровень 16
6 декабря 2018, 08:46
Ну да... Наверно сбило с толку, если 2 или 3 числа равны то вывести любое...
0
Roman
Уровень 16
4 декабря 2018, 18:00
Программа все верно считает, вроде как
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush