|--代码示例
1 /** 2 * @auther::9527 3 * @Description: 算法学习 4 * @program: oop 5 * @create: 2019-09-12 23:48 6 */ 7 public class Test { 8 public static void main(String[] args) { 9 //乘数 10 int multiplier = 358623965; 11 //被乘数 12 int multiplicand = 200203679; 13 //用一个变量接收转化后的数字 14 String[] temp = Test.change(multiplier); 15 for (int i = 0; i < temp.length; i++) { 16 //将各个数位上的字符串数字转化为整型数字并乘以乘数 17 int centre = Integer.parseInt(temp[i]) * multiplicand; 18 //重新储存数组 19 temp[i] = Integer.toString(centre); 20 } 21 for (int i = temp.length - 1; i >= 0; i--) { 22 int centre = Integer.parseInt(temp[i]); 23 int nextCentre = 0; 24 if (i - 1 > 0) { 25 nextCentre = Integer.parseInt(temp[i - 1]); 26 temp[i] = Integer.toString(centre % 10); 27 temp[i - 1] = Integer.toString(nextCentre + centre / 10); 28 //设定一下,防止数组越界异常 29 } else if (i - 1 == 0 && Integer.parseInt(temp[i]) / 10 > 10) { 30 System.out.println("数位不足,需重新设定数组长度"); 31 break; 32 } 33 } 34 35 //输出结果 36 for (String s : temp) { 37 System.out.print(s); 38 } 39 40 System.out.println("\n\n以下是用长整型long计算的结果,用于检验上面的算法的结果"); 41 long a = 358623965; 42 long b = 200203679; 43 System.out.println("标准答案;" + a * b); 44 } 45 46 47 /** 48 * 49 * @param num 输入一个整型的数 50 * @return 返回将大数字放入数组的那个数组 51 */ 52 public static String[] change(int num) { 53 //声明一个长度20的数组 54 String[] temp = new String[25]; 55 //声明一个整型n,用做temp的计数器 56 int n = 1; 57 // 将传入大数字分割成单个的数字 58 String[] transfer = Integer.toString(num).split(""); 59 //倒序遍历num转化成的String数组,将这个数组放入申明的数组中 60 for (int i = transfer.length - 1; i >= 0; i--) { 61 //倒序放入,此时,n就是用来在数位上递减的变量 62 temp[temp.length - n] = transfer[i]; 63 n += 1; 64 } 65 //将tmep数组中的null替换为字符串“0” 66 for (int i = 0; i < temp.length; i++) { 67 if (temp[i] == null) { 68 temp[i] = "0"; 69 } 70 } 71 return temp; 72 } 73 }
大数字计算---懒,后面的步骤没写成方法
原文地址:https://www.cnblogs.com/twuxian/p/11516597.html
时间: 2024-10-07 00:59:46