J'ai écrit un programme pour une addition binaire en Java. Mais le résultat n'est parfois pas juste.
Par exemple si j'ajoute 1110 + 111. Le résultat devrait être 10101.
Mais mon programme jette 10001.
Peut-être que l'un d'entre vous trouve l'erreur.Ajout binaire en Java
import java.util.Scanner;
public class BinaryAdder {
public static String add(String binary1, String binary2) {
int a = binary1.length()-1;
int b = binary2.length()-1;
int sum = 0;
int carry = 0;
StringBuffer sb = new StringBuffer();
while (a >= 0 || b >= 0) {
int help1 = 0;
int help2 = 0;
if(a >=0){
help1 = binary1.charAt(a) == '0' ? 0 : 1;
a--;
} if(b >=0){
help2 = binary2.charAt(b) == '0' ? 0 : 1;
b--;
}
sum = help1 +help2 +carry;
if(sum >=2){
sb.append("0");
carry = 1;
} else {
sb.append(String.valueOf(sum));
carry = 0;
}
}
if(carry == 1){
sb.append("1");
}
sb.reverse();
String s = sb.toString();
s = s.replaceFirst("^0*", "");
return s;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("First: ");
String input1 = scan.next("(0|1)*");
System.out.print("Second: ");
String input2 = scan.next("(0|1)*");
scan.close();
System.out.println("Result: " + add(input1, input2));
}
}
Non, le professeur demande particulièrement de très grands nombres. Mais je ne m'attends pas à des signes moins –
@EC alors il suffit d'utiliser 'Long.parseUnsignedLong' et vous êtes prêt à partir, sauf si les chiffres sont encore plus grands que ce que' Long' peut contenir (plus grand que '9223372036854775807') – niceman