/*
本题的需求是:给出两个字符串,内容是二进制数字,编写计算两个二进制数字和的程序。
难点是考虑周到,尤其是最后的一个进位,容易遗忘。
*/
import java.util.ArrayList;
class AddBinary{
public static void main(String args[])
{
AddBinary addBinary = new AddBinary();
addBinary.AddBinary("11011","11101");
}
public String AddBinary(String a,String b)
{
int aLength = a.length();
int bLength = b.length();
String result = "";
ArrayList<Integer> aList = new ArrayList<Integer>();
ArrayList<Integer> bList = new ArrayList<Integer>();
for(int i =0;i<aLength;i++){
aList.add(0,Integer.parseInt(a.substring(i,i+1)));
}
for(int j =0;j<bLength;j++){
bList.add(0,Integer.parseInt(b.substring(j,j+1)));
}
int k =0;
int plugnum =0;
while(k<aLength && k<bLength)
{
int a1 = aList.get(k);
int b1 = bList.get(k);
int sum = a1 + b1 +plugnum;
if(sum>=2)
{
sum = sum % 2;
result = String.valueOf(sum)+result;
plugnum = 1;
}
else
{
result = String.valueOf(sum)+result;
}
k++;
}
if(k<aLength)
{
int i =k;
int a2 = aList.get(i);
int sum = a2 + plugnum;
if(sum>=2)
{
sum = sum % 2;
result = String.valueOf(sum)+result;
plugnum =1;
}
else
{
result = String.valueOf(sum)+result;
}
i++;
}
if(k<bLength)
{ int i =k;
int b2 = bList.get(i);
int sum = b2 + plugnum;
if(sum>=2)
{
sum = sum%2;
result = String.valueOf(sum)+result;
plugnum=1;
}
else
{
result = String.valueOf(sum)+result;
}
i++;
}
//这一段代码是最后的进位:
if(plugnum == 1)
{
result = String.valueOf(plugnum)+result;
}
System.out.println("二进制数字的和是:");
System.out.println(result);
return result;
}
}
java AddBinary
二进制数字的和是:
111000