JAVA题目-数组3

来源:互联网 发布:淘宝代办工商营业执照 编辑:程序博客网 时间:2024/05/24 05:41

题目
3、编写程序,通过命令行参数给程序传入两个大整数(其中至少有一个整数超过35位),首先对两个数进行显示,计算两数之和与差,输出结果。请注意,输出的结果请务必符合书写习惯。
如:
num1=40300000000000000000000000000000000000000000000
num2=40200000000000000000000000000000000000000000000
或者
num1=4632864832684683568465765487657665765236465244
num2=67

  • 数组实现
import java.util.Scanner;public class Three {    static void StringToInt(int []num,String s) {        for(int i=0;i<s.length();i++)            num[i]=Integer.parseInt(s.substring(i,i+1));    }    static void Print(int []num) {        for(int i:num)            System.out.print(i);        System.out.println();    }    static char sign(int[] num1,int[] num2) {        if(num1.length < num2.length) {            return '-';        }        else if(num1.length == num2.length){            int i=0;            while(i<num1.length&&num1[i]==num2[i]) {                i++;            }            if(i<num1.length&&num1[i]<num2[i]) {                return '-';            }        }        return '+';    }    static void add(int[] num1,int[] num2) {        int len = num1.length>num2.length ? num1.length : num2.length;        int []sum=new int[len+1];   // 倒序存储和        int i=num1.length-1,j=num2.length-1;        int k=0;        int cin=0,temp=0;        while(i>=0&&j>=0) {             temp=num1[i]+num2[j]+cin;            sum[k]=temp%10;            cin=temp/10;            i--;            j--;            k++;        }        while(i>=0&&j<0) {            temp=num1[i]+cin;            sum[k]=temp%10;            cin=temp/10;            k++;            i--;        }        while(i<0&&j>=0) {            temp=num2[j]+cin;            sum[k]=temp%10;            cin=temp/10;            k++;            j--;        }        if(cin!=0)             sum[k]=cin;        else k--;        System.out.print("num1+num2=");        for(int t=k;t>=0;t--) {            System.out.print(sum[t]);        }    }    static int[] sub(int[] num1,int[] num2) {        int len = num1.length > num2.length ? num1.length : num2.length;        int[] sub=new int[len];        int i = num1.length - 1, j = num2.length - 1;        int k=0,temp=0;        while(j>=0&&i>=0) {            temp=num1[i]-num2[j];            if(temp<0) {                temp=temp+10;                num1[i-1]=num1[i-1]-1;            }            sub[k]=temp;            i--;            j--;            k++;        }        while(i>=0&&j<0) {            temp=num1[i];            if(temp<0) {                temp=temp+10;                num1[i-1]=num1[i-1]-1;            }            sub[k]=temp;            i--;            k++;        }        while(k>0&&sub[k-1]==0) {            k--;        }        int n=k;        if(k==0)  return null;        int[] result=new int[n];        for(int t=0;t<n;t++) {            result[t]=sub[k-1];            k--;        }        return result;    }    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner input=new Scanner (System.in);        System.out.print("Enter first num:");        String s1=input.next();        System.out.print("Enter second num:");        String s2=input.next();        int []num1=new int[s1.length()];        int[] num2=new int[s2.length()];        StringToInt(num1,s1);        StringToInt(num2,s2);        System.out.print("num1 = ");        Print(num1);        System.out.print("num2 = ");        Print(num2);        int len = num1.length > num2.length ? num1.length : num2.length;        add(num1,num2);        System.out.println();        int sub[]=new int[len];        char ch =sign(num1,num2);        if(ch=='+') {            sub=sub(num1,num2);            if(sub==null)                System.out.print("num1-num2=0");            else {                System.out.print("num1-num2=");                Print(sub);            }        }        else if(ch=='-'){            sub=sub(num2,num1);            System.out.print("num1-num2= -");            Print(sub);            }    }}
  • BigInteger类实现
import java.math.BigInteger;import java.util.Scanner;public class Three {    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner input=new Scanner(System.in);        String s1,s2;        s1=input.next();        s2=input.next();            input.close();        BigInteger num1=new BigInteger(s1);        BigInteger num2=new BigInteger(s2);        System.out.println(""+num1+" - "+num2+" = "+num1.subtract(num2));        System.out.println(""+num1+" + "+num2+" = "+num1.add(num2));    }}
原创粉丝点击