我爲java中的二進制加法編寫了一個程序。但結果有時並不正確。
例如,如果我添加1110 + 111。結果應該是10101.
但是我的程序拋出10001.
也許你們中的一個人發現了錯誤。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));
}
}
沒有教授特別要求非常大的數字。但我不期望減號 –
@EC然後只需使用'Long.parseUnsignedLong',如果數字比'Long'更大(比'9223372036854775807'更大) – niceman