上机题目(中级)- 两个超级大的整数相加相减

页面导航:首页 > 软件编程 > Java编程 > 上机题目(中级)- 两个超级大的整数相加相减

上机题目(中级)- 两个超级大的整数相加相减

来源: 作者: 时间:2016-01-21 09:39 【

代码如下:public class AddSub {public static void main(String[] args) {String a= "4632864832684683568465765487657665765236465244 ";String b= "47 ";int []pa=stringToInts(a);int []

代码如下:

public class AddSub {
	public static void main(String[] args) {
		
		String a="4632864832684683568465765487657665765236465244";
		String b="47";
		int []pa=stringToInts(a);
		int []pb=stringToInts(b);
		String ans_add=add(pa, pb);
		String ans_sub=sub(pb,pa);
		System.out.println("相加结果是:"+ans_add);
		System.out.println("相减结果是:"+ans_sub);
	}
	/**
	 * 将String型转换成int数组
	 * @param s
	 * @return
	 */
	public static int[] stringToInts(String s){
		int[] n = new int[s.length()]; 
		for(int i = 0;i=0||b_len>=0){
			int temp=0;
			if(a_len>=0&&b_len>=0){
				temp=a[a_len]+b[b_len]+jinwei;
			}else if(a_len>=0){
				temp=a[a_len]+jinwei;
			}else if(b_len>=0){
				temp=b[b_len]+jinwei;
			}
			sb.append(temp%10+"");
			jinwei=temp/10;
			a_len--;b_len--;
		}
		return getNum(sb.reverse());
	}
	
	public static String sub(int []a,int []b){
		StringBuffer sb=new StringBuffer();
		boolean flag=false;//判断a是不是比b小
		if(a.length=0||b_len>=0){
			int temp=0;
			if(a_len>=0&&b_len>=0){
				if((a[a_len]-jiewei)=0){
				temp=a[a_len]-jiewei;
				jiewei=0;
			}
			sb.append(temp+"");
			
			a_len--;b_len--;
		}
		if(flag){
			return getNum(sb.append("-").reverse());
		}
		return getNum(sb.reverse());
	}
	//去掉最前面的0
	public static String getNum(StringBuffer sb){
		while(sb.length() > 1 && sb.charAt(0) == '0') {
            sb.deleteCharAt(0);
        }
		return sb.toString();
	}

}

运行实例如下:


Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<