Странно, что ему не понравилось) Всё отрабатывает как надо)
package com.javarush.task.task39.task3903;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Неравноценный обмен
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter a number: ");
long number = Long.parseLong(reader.readLine());
System.out.println("Please enter the first index: ");
int i = Integer.parseInt(reader.readLine());
System.out.println("Please enter the second index: ");
int j = Integer.parseInt(reader.readLine());
System.out.println("The result of swapping bits is " + swapBits(number, i, j));
}
public static long swapBits(long number, int i, int j) {
if (i < 0 || j < 0 || i == j || number == 0) return number;
else {
int iValue=((number&(1<<i))>0)?1:0;
int jValue=((number&(1<<j))>0)?1:0;
if (iValue!=jValue){
if (iValue==1){
number&=~(1<<i);
number|=lsl(j);
}else {
number&=~(1<<j);
number|=lsl(i);
}
}
}
return number;
}
private static long lsl(int shift){
long result=1L;
for (int i = 0; i <shift ; i++) {
result<<=1;
}
return result;
}
}