Java 两大数相乘
2015-06-21 20:36
393 查看
两大数相乘(若是相加的话就更容易了)
public class Snippet { public static void main(String[] args) { // System.out.println("Hello world"); //String str1 = "1234"; //String str2 = "1234"; //String str1 = "1076060999"; //String str2 = "90188905567"; String str1 = "15"; String str2 = "15"; System.out.println("乘数:"+str1); System.out.println("乘数:"+str2); bigNumberSimpleMulti(str1,str2); } public static void bigNumberSimpleMulti(String f, String s) { System.out.print("乘法:\n" + f + "*" + s + "="); // 获取首字符,判断是否是符号位 char signA = f.charAt(0); char signB = s.charAt(0); char sign = '+'; if (signA == '+' || signA == '-') { sign = signA; f = f.substring(1); } if (signB == '+' || signB == '-') { if (sign == signB) { sign = '+'; } else { sign = '-'; } s = s.substring(1); } // 将大数翻转并转换成字符数组 char[] a = new StringBuffer(f).reverse().toString().toCharArray(); char[] b = new StringBuffer(s).reverse().toString().toCharArray(); int lenA = a.length; int lenB = b.length; // 计算最终的最大长度 int len = lenA + lenB; int[] result = new int[len]; // 计算结果集合 for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { result[i + j] += (int) (a[i] - '0') * (int) (b[j] - '0'); } } // 处理结果集合,如果是大于10的就向前一位进位,本身进行除10取余 for (int i = 0; i < result.length; i++) { if (result[i] > 10) { result[i + 1] += result[i] / 10; result[i] %= 10; } } StringBuffer sb = new StringBuffer(); // 该字段用于标识是否有前置0,如果是0就不需要打印或者存储下来 boolean flag = true; for (int i = len - 1; i >= 0; i--) { if (result[i] == 0 && flag) { continue; } else { flag = false; } sb.append(result[i]); } if (!sb.toString().equals("")) { if (sign == '-') { sb.insert(0, sign); } } else { sb.append(0); } // 返回最终结果 System.out.println(sb.toString()); } }
相关文章推荐
- Spring MVC基本原理
- java中的几种内部类
- java学习笔记1
- javax.xml.registry.infomodel.User
- Java-马士兵设计模式学习笔记-代理模式--动态代理 修改成可以代理任意接口
- javase学习之路——面向对象
- Java基础08——I/O流<一>
- java 获取系统变量(环境变量和环境变量)
- Spring MVC controller和jsp页面传值
- JavaSE8新特性——lambda表达式1
- Java内部类(三)匿名内部类
- Spring MVC ModelAndView
- Spring声明式事务配置管理方法
- java csv 0开头问题
- java基础—IO类——LineNumberReader 的使用
- 窗体自定义路径显示图片(Java)
- Java内部类(二)局部内部类
- javax.servlet.jsp.PageContext cannot be resolved to a type
- spring4.0新特性综述
- jdk8新特性