具体思路是:
1.将字符串转化为字符数组
2.将字符数组转化为整型数组
3.设计整型数组除2的方法
4.设计整型数组对2取余的方法
5.设计退出条件,整型数组所有元素的值都为0
啥也不说了,贴代码。
public class BigIntToBin { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String intstr="8392162"; String result=""; char [] charArray=StrToCharArray(intstr); int [] intArray=CharArrayToIntArray(charArray); boolean exitFlag=false; while(true){ exitFlag=checkExit(intArray); if(exitFlag){ break; }else{ result=String.valueOf(intArrayModTwo(intArray))+result; intArray=IntArrayDivTwo(intArray); } } System.out.println(result); } // 字符串转字符数组 static char [] StrToCharArray(String str){ return str.toCharArray(); } // 字符数组转整型数组 static int [] CharArrayToIntArray(char [] charArray){ int [] intArray=new int[charArray.length]; for (int i = 0; i < intArray.length; i++) { intArray[i] = charArray[i] - '0'; } return intArray; } // 检查整型字符串是否所有值都为0 static boolean checkExit(int [] intArray){ int sum = 0; for (int i = 0; i < intArray.length; i++) { sum=sum+intArray[i]; } if(sum==0){ return true; }else{ return false; } } // 整型数组除2得到新数组 static int [] IntArrayDivTwo(int [] intarray){ int [] resultArray= new int [intarray.length]; boolean giveFlag=false; // 遍历整型数组,计算除2 for (int i = 0; i < intarray.length; i++) { // 补位处理 if(giveFlag){ resultArray[i] = (int)((10+intarray[i])/2); giveFlag=((10+intarray[i])%2)==1?true:false; }else{ // 最后一位处理 if(i==intarray.length){ resultArray[i]=(int)(intarray[i]/2); }else{ // 值为1处理 if(intarray[i]==1){ resultArray[i]=0; giveFlag=true; // 值为非1处理 }else{ resultArray[i] = (int)(intarray[i]/2); giveFlag = (intarray[i]%2)==1?true:false; } } } } return resultArray; } // 整型数组对2取余数 static int intArrayModTwo(int [] intarray){ return intarray[intarray.length-1]%2; } }
未处理异常情况,作为一个测试人员,我的目标是实现功能,未考虑空串,全为0的串等情况。
经过这次处理,对大数相加,大数相减,大数相乘处理起来都不是问题,大数相除需要考虑的还比较多,还没整理处理。