Ближайшее к 10

  • 4
  • Недоступна
Напишите метод displayClosestToTen. Метод должен выводить на экран ближайшее к 10 из двух чисел, записанных в аргументах метода. Например, среди чисел 8 и 11 ближайшее к десяти 11. Если оба числа на равной длине к 10, то вывести на экран любое из них. Подсказка: используйте метод public static int a
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (286)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Zhaxylyk
Уровень 35, Актобе, Казахстан
5 октября, 12:42
Ломал голову долго, но не зря, потому что понял как этот метод(тернарный оператор взаимодействует с методом abs(); if (abs(10-a) <= abs(10-b)) a ; b тут мы в первую очередь 1) минусуем с 10 цифру который передан в аргументе в нашем случае это 8. (10-8) = 2. 2) берем эту цифру и вносим в метод abs для сравнивания на минусовую число. тут вернет число 2. 3) теперь очередь нашего второго числа b. пусть будет это -11. 10- (-11) = -1; -1 вносим в метод abs, получается тут будет return -1; ну вот и все) мы закончили с методом abs. мы выявили первую число и проверили минусовый ли цифра или нет так же узнали вторую число и проверили в методе abs. теперь как видите тут if (abs(10-a) <= abs(10-b)) a ; b мы сравниваем в конец эти 2 числа между собой и выводим самую маленькую. надеюсь вы поняли.
neofeodal
Уровень 6
21 сентября, 16:33
HELP🙏 Не пойму зачем нужен вообще тут метод abs если вычитание итак даёт нам нжный эффект: 7 - 10 = -3 6 - 10 = -4 -3 ближе к 10 чем -4 Пример: System.out.println((a-10) >= (b-10) ? a : b); А если мы ответы поставим в метод abs тогда окажется, что 6 (6-10=-4, |-4| = 4) окажется ближе к десяти (потому что он больше второго ответа (-3)). Или я неправильно использую метод, потому что есть два способа его использовать это: 1. помещать в аргумент метода abs число сразу (но тогда нет смысла). Пример: System.out.println((abs(a)-10) >= (abs(b)-10) ? a : b); 2. помещать в аргумент метода abs число после вычитания от 10и. и тогда уже в операторе надобудет сравнивать не то какой ответ больше второго, а тот который меньше. (тогда всё сходится как если бы мы смотрели это на отрезке). Пример: System.out.println(abs((a-10)) <= abs((b-10)) ? a : b); https://javarush.ru/groups/posts/ternarnyj-operator ⬆️очень полезная ссылка на тему тернарных операторов, всё чётко, сжато и по делу) пока расписал ... сам и ответил 🤦‍♂️
Елена
Уровень 19, Санкт-Петербург
23 августа, 14:21
Вообще есть шанс что я когда-нибудь начну понимать что тут происходит)?
Yevgeniy
Уровень 5
27 апреля, 13:27
не совсем понял как работает метод abs, типа 8-10 = -2, / 7-10 = -3 -2<0 return -2; / -3<0 return -3 11-10=1, / 14 - 10= 4 1>0 return 1 / 4>0 return 4 if -2>=1 печатать b / if -3>=4 печатать b иначе печатать а так чтоле??
Vadym Tereschuk
Уровень 14, Киев, Украина
15 июля, 18:25
abc это модуль числа, модуль не может быть отрицательным он или 0 или целое положительное число.
Andre Timoshenko System Engineer в Приватбанк
8 сентября, 04:18
То что abs - это модуль понятно, но из метода который описан
if (a < 0) {
          return -a;
      } else {
          return a;
непонятно почему при отрицательном "return -a" возвращается по факту положительное число, ведь стоит "-а" или "-" на "-" дает "+" по этому выходит "+" в обоих return?
Vadym Tereschuk
Уровень 14, Киев, Украина
8 сентября, 12:24
В параметр методу приходит отрицательное, два минуса дадут плюс
Эльдар
Уровень 12, Ростов-на-дону
19 марта, 10:25
как вывести ЛЮБОЕ значение?
hidden #2328942
Уровень 4
16 марта, 14:51
if (abs(10 - a) <= abs(10 - b)) System.out.println(a); else System.out.println(b);
BambucH
Уровень 2, Москва, Россия
12 марта, 11:02
есть инфа где подробно разжёвывают про "abs". В душе не чаю что это такое
Павел Соловьёв докер - механизатор в Порт
16 марта, 22:21
abs это модуль числа . http://proglang.su/java/numbers-abs
Алексей Терешин
Уровень 18, Самара, Россия
6 марта, 17:28
Очень сложно понять что нужно делать, вернее заводят в заблуждение иной раз как в это задаче: что если значения равны вывести любое, но когда пишешь код об этом равенстве задача не проходит тест-говорит что не соблюдены все условия задачи и как только удаляешь кусочек кода о равенстве задача неожиданным образом походит тест!!!! 2 дня ломал голову над задачей пока не погуглил конкретную проблему!!!!
Павел
Уровень 8, Санкт-Петербург
3 марта, 16:53
В общем я чего-то не понимаю. С отрицательными числами работает правильно. Но ни в идее ни через вебсреду последний пункт не проходит валидацию. Ткните носом пожалуйста.
public class Solution {
    public static void main(String[] args) {
        displayClosestToTen(8, 11);
        displayClosestToTen(7, 14);
    }

    public static void displayClosestToTen(int a, int b) {

        if (abs(a-10) < (b - 10))
            System.out.println(a);
        else
            System.out.println(b);
    }


    public static int abs(int a) {
        if (a < 0) {
            return -a;
        } else {
            return a;
        }
    }
}
Павел
Уровень 8, Санкт-Петербург
3 марта, 18:56
Да. Уже допёр) Но все равно спасибо. Проблема в том, что я не продумал вариант когда второй аргумент отрицательный (abs(b-10)) и не воспринял условие задачи если одинаково удалены от 10 ((abs(a - 10) == abs(b - 10)). В общем как известно "Поспешишь - людей насмешишь".
Eduard Sharipov
Уровень 23, Уфа, Россия
13 февраля, 10:45
Короче сначала "число" - 10, потом приведение к модулю и сравнение числа.