Je résolvait un défi de HackerRank, il est appelé Flipping Bits De là: https://www.hackerrank.com/challenges/flipping-bits Comme je vois tous les cas que je l'ai essayé est correct Vous devez d'abord saisir le nombre de chiffres que vous voulez convertir. Puis donné un nombre, il le convertit en un bit binaire de 32 bits non signés. Ensuite, il retourne tous les bits 0-> 1 & 1-> 0, puis il est converti en décimal et imprimé. Voici mon code, je sais que ce n'est pas optimal et cela me donnerait une erreur d'exécution mais je veux partir d'ici, avoir le bon code.Erreur tandis que les bits flipping
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]);
}
}
}
Le problème est là où je l'entrée 2147483647 Il montre:
Exception dans le thread "principal" java.lang.NumberFormatException: Pour l'entrée> string: "1111111111111111111111111111111" à> java.lang .NumberFormatException.forInputString (NumberFormatException.java>: 65) à java.lang.Long.parseLong (Long.java:592) à java.lang.Long.parseLong (Long.java:631) à flipping_bits_v3.Solution. main (Solution.java:17)
et je ne sais pas ce que cela pourrait être, est-ce un cas particulier que je n'ai pas géré? Merci.