Ich war eine Herausforderung von HackerRank zu lösen, nennt man das Flipping Bits Von hier: https://www.hackerrank.com/challenges/flipping-bits Wie ich jeden Fall sehen, dass ich versucht habe Sie erste Eingabe die Anzahl der Zahlen korrekt sind Sie konvertieren möchten. Dann gegeben eine Zahl, es konvertiert es in eine 32 vorzeichenlose Bit-Binärdatei. Dann dreht es alle Bits 0-> 1 & 1-> 0 und dann wird es in Dezimal konvertiert und gedruckt. Hier ist mein Code, ich weiß, es ist nicht optimal und es würde mir Laufzeitfehler geben, aber ich möchte von hier aus starten, mit dem richtigen Code.Fehler beim Spiegeln Bits
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int cases = input.nextInt(); // Número de casos
Long[] dec_nums = new Long[cases]; // Arreglo contenedor de casos
for (int i = 0; i < cases; i++) {
dec_nums[i] = input.nextLong(); // Almacenamiento de casos
}
String[] bin_nums = new String[cases]; // Arreglo con dec-bin
for (int i = 0; i < cases; i++) { //Convertir cada decimal a binario
bin_nums[i] = (String.format("%032d", (Long.parseLong(Long.toBinaryString(dec_nums[i])))));
//Rellenar con 0's
}
String[] final_bin=new String[cases];
for(int i=0;i<cases;i++){
final_bin[i]="";
for(int j=0;j<bin_nums[i].length();j++){
if(bin_nums[i].charAt(j)=='0'){
final_bin[i]+="1";
}
if(bin_nums[i].charAt(j)=='1'){
final_bin[i]+="0";
}
}
}
long[]final_dec= new long[cases];
for(int i=0; i<cases;i++){
final_dec[i]=0;
for(int j=0; j<32;j++){
if (final_bin[i].charAt(j)=='1'){
final_dec[i]=Long.parseLong(final_bin[i], 2);
}
}
}
//Imprimir binarios
System.out.println("Binarios:");
for (int i = 0; i < cases; i++) {
System.out.println(bin_nums[i]);
}
//Imprimir binarios flipped
System.out.print("Flipped: ");
System.out.println(" ");
for(int i=0; i<cases; i++){
System.out.println(final_bin[i]);
}
System.out.println("Decimales");
System.out.println(" ");
for(int i=0; i<cases; i++){
System.out.println(final_dec[i]);
}
}
}
Das Problem ist, wo ich Eingang 2147483647 Es zeigt:
Exception in thread "main" java.lang.NumberFormatException: Für input> string: "1111111111111111111111111111111" bei> java.lang .NumberFormatException.forInputString (NumberFormatException.java>: 65) bei java.lang.Long.parseLong (Long.java:592) bei java.lang.Long.parseLong (Long.java:631) bei flipping_bits_v3.Solution. Haupt (Solution.java:17)
und ich weiß nicht, was es sein könnte, ist es ein Sonderfall, den ich nicht behandelt habe? Danke.