package com.javarush.task.task04.task0409;
/*
Ближайшее к 10
*/
public class Solution {
public static void main(String[] args) {
displayClosestToTen(8, 11);
displayClosestToTen(7, -14);
}
public static void displayClosestToTen(int a, int b) {
// напишите тут ваш код
int aa;
int bb;
if (a<0)
{
aa =(10-(a));
}
else
{
aa = a;
}
if (b<0)
{
bb =(10-(b));
}
else
{
bb = b;
}
int cc = 10 - aa;
int dd = 10 - bb;
if (abs(cc)>abs(dd))
{
System.out.println(b);
}
else if (abs(cc)<abs(dd))
{
System.out.println(a);
}
else
{
System.out.println(b);
}
}
public static int abs(int a) {
if (a < 0) {
return -a;
} else {
return a;
}
}
}
Rauan Khabiev
41 уровень
Не проходит последнее условие, прошу подсказать, что не так?
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
АлександрExpert
15 августа 2019, 10:27
Проще сказать, что тут правильно. А правильного тут немного.
Ты перым делом проверяешь, если а отрицательное, то получаешь уже готовое решение на вопрос на сколько а близко к 10. (например а = -5, то аа будет 10 - (-5) = 15), но если а положительное, то тут логика ломается. оно остается неизменным (если а равно 4, оно аа будет так же 4). с b аналогично.
Далее ты делаешь то что должен был сделать для положительных, а для отрицательных повторяешь эту операцию, если ты уже при отрицательных значениях вычел а из 10, зачем ты это повторяешь? Получается 10 - 15 = -5, получаем исходное значение.
Для чего нужен метод абс:
он вернет положительное значение, в любом случае. Что нам это дает. Мы можем сразу вычислить разницу между 10 и данными числами (10 - 8 = 2 и 10 - 11 = -1, но абс вернет 1. 2 < 1 ? если да то возвращаем а, если нет то б), и метод абс вернет нам разницу, всегда положительную. И уже эти два числа нужно сравнивать.
Кода 3 строки. Ни 1 дополнительной переменной не надо.
0