前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java实现的手工做乘法方法,给出二个字符串数字,返回相乘结果

Java实现的手工做乘法方法,给出二个字符串数字,返回相乘结果

作者头像
用户1289394
发布2018-02-27 15:40:15
2.4K0
发布2018-02-27 15:40:15
举报
文章被收录于专栏:Java学习网Java学习网

给定两个字符串数字,返回两数字相乘的结果字符串;如:String a="200",String b="10",要求返回"2000"。

问题分析:

解决这个问题的关键是在每个数字的相应位置增加数量。这是我们手工做乘法。

网络配图

Java解决方法,代码如下:

代码语言:js
复制
public class TestMultiply {
public static void main(String[] args) throws Exception {
System.out.println(multiply("200", "10"));
}
public static String multiply(String num1, String num2) {
String n1 = new StringBuilder(num1).reverse().toString();
String n2 = new StringBuilder(num2).reverse().toString();
int[] d = new int[num1.length() + num2.length()];
//multiply each digit and sum at the corresponding positions
for (int i = 0; i < n1.length(); i++) {
for (int j = 0; j < n2.length(); j++) {
d[i + j] += (n1.charAt(i) - '0') * (n2.charAt(j) - '0');
}
}
StringBuilder sb = new StringBuilder();
//calculate each digit
for (int i = 0; i < d.length; i++) {
int mod = d[i] % 10;
int carry = d[i] / 10;
if (i + 1 < d.length) {
d[i + 1] += carry;
}
sb.insert(0, mod);
}
//remove front 0's
while (sb.charAt(0) == '0' && sb.length() > 1) {
sb.deleteCharAt(0);
}
return sb.toString();
}
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档