兩個大數相乘
阿新 • • 發佈:2019-01-28
import javax.swing.text.rtf.RTFEditorKit; public class LargeNumMult{ public static void main(String[] args) { String a="424242343242"; String b="65757567001"; String finalResult = "0"; for(int i = b.length()-1,h=0; i >= 0; i--,h++){ int bSingle = Integer.valueOf(b.substring(i, i+1)); StringBuilder result = new StringBuilder(); int remainder = 0; for(int j = a.length()-1; j >= 0; j--){ int singleNum = Integer.valueOf(a.substring(j, j+1)); int singleResult = bSingle*singleNum+remainder; result.append(singleResult%10); if (j==0) { result.append(singleResult/10); } remainder = singleResult/10; } StringBuilder singleResult = result.reverse(); for(int k = 0; k < h ; k++){ singleResult.append(0); } finalResult = add(singleResult.toString(), finalResult).toString(); } System.out.println(finalResult.replaceAll("0*", "")); } static StringBuilder add(String s1, String s2){ if (s1.length()>s2.length()) { StringBuilder stringBuilder2 = new StringBuilder(s2).reverse(); for(int i = 0; i<s1.length()-s2.length(); i++){ stringBuilder2.append(0); } s2 = stringBuilder2.reverse().toString(); } StringBuilder addResult = new StringBuilder(); int addHightPosition = 0; for(int i = s1.length()-1; i >=0; i-- ){ int singleNum1 = Integer.valueOf(s1.substring(i, i+1)); int singleNum2 = Integer.valueOf(s2.substring(i, i+1)); int singleResult = singleNum1+singleNum2+addHightPosition; addResult.append(singleResult%10); addHightPosition = singleResult/10; if (i==0) { addResult.append(addHightPosition); } } addResult.reverse(); System.out.println("add "+addResult); return addResult; } }