大数乘法

来源:互联网 发布:mac怎么恢复废纸篓 编辑:程序博客网 时间:2024/06/18 01:33
public class BigIntMultiply {    public static void main(String[] args) {        // TODO Auto-generated method stub        @SuppressWarnings("resource")        Scanner s = new Scanner(System.in);        String str1 = new String();        String str2 = new String();        while (s.hasNext()){            str1 = s.nextLine();            str2 = s.nextLine();            char [] charArr1 = str1.toCharArray();            char [] charArr2 = str2.toCharArray();            covertdata(charArr1,charArr1.length);            covertdata(charArr2,charArr2.length);            multiply(charArr1, charArr2, charArr1.length, charArr2.length );        }    }    public static void covertdata(char data[], int len) {        for (int i = 0; i < len/2; i++){            data[i] += data[len - 1 -i];            data[len - 1 -i] = (char) (data[i] - data[len - 1 -i]);            data[i] = (char) (data[i] - data[len - 1 -i]);        }    }    public static void multiply(char []char1, char []char2, int length1, int length2){        int mullength = length1 + length2 + 1;        int mul[] = new int [mullength] ;        for (int ii = 0; ii < mullength; ii ++ )            mul[ii] = 0;        for (int i = 0; i < length1; i++){            for (int j = 0; j < length2; j++){                mul[i+j] += Integer.parseInt(String.valueOf(char1[i]))* Integer.parseInt(String.valueOf(char2[j]));            }                   }        for (int m = 0; m < mullength-1; m++){            int carry = mul[m]/10;            mul[m] = mul[m]%10;            mul[m+1] += carry;        }        int n;        for ( n = mullength-1; n>=0; n--){            if (mul[n] != 0) break;        }        String output = "";        for(int jj = n; jj >= 0 ; jj--){            output = output + mul[jj];//拼接成字符串,最终放在变量s中        }        System.out.println(output);    }}