Проверил различные варианты, все считает верно, но увы, валик не принимает!!!!
package com.javarush.task.task39.task3903;
import org.apache.commons.lang3.StringUtils;
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(Long.toBinaryString(number));
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) {
String s = StringUtils.right(StringUtils.repeat("0", Math.max(i, j) + 1) + Long.toBinaryString(number), Math.max(i, j) + 1);
char [] m = s.toCharArray();
char temp = m[m.length - i - 1];
m[m.length - i - 1] = m[m.length - j - 1];
m[m.length - j - 1] = temp;
String d = String.valueOf(m);
return Long.parseLong(d, 2);
}
}