Вот что мне пишет, а я не понимаю почему:
Метод closeToTen должен выводить число на экран согласно заданию.
РЕКОМЕНДАЦИЯ ОТ МЕНТОРА
Убедись, что программа работает корректно с числами, которые одинаково удалены от 10.
package com.javarush.task.task04.task0409;
/*
Ближайшее к 10
*/
public class Solution {
public static void main(String[] args) {
closeToTen(8, 11);
closeToTen(7, 14);
}
public static void closeToTen(int a, int b) {
int a1 = a-10;
int a2 = abs(a1);
int b1 = b-10;
int b2 = abs(b1);
if (a2<b2){
System.out.println(a);
}else if (b2<a2){
System.out.println(b);
} else{
System.out.println(a^b);
}
}
public static int abs(int a) {
if (a < 0) {
return -a;
} else {
return a;
}
}
}package com.javarush.task.task04.task0409;
/*
Ближайшее к 10
*/
public class Solution {
public static void main(String[] args) {
closeToTen(8, 11);
closeToTen(7, 14);
}
public static void closeToTen(int a, int b) {
int a1 = a-10;
int a2 = abs(a1);
int b1 = b-10;
int b2 = abs(b1);
if (a2<b2){
System.out.println(a);
}else if (b2<a2){
System.out.println(b);
} else{
System.out.println(a^b);
}
}
//напишите тут ваш код
public static int abs(int a) {
if (a < 0) {
return -a;
} else {
return a;
}
}
}
поэтому когда вы пишете a^b (допустим а = 3, b = 5) - то получается что эти числа приводятся в двоичное представление, и потом по каждому разряду применяется этот вот оператор:
получается что 3^5 = 6 :)
вообще вы довольно редко встретитесь с ситуацией, когда вам понадобится этот оператор))
интересный факт: если теперь 6ку снова же "скрестить" с 5кой - то мы получим 3ку, как и было в самом начале. поэтому исключающее или довольно часто применяется для ширования/расшифрования ;)
если вам нужно не исключающее или, а обычное - в джаве для этого используется оператор ||