mport java.util.Scanner;
02 |
03 | public class
Multiply |
04 | { |
05 | public
String mul(String str1,String str2) |
06 | { |
07 | StringBuffer bstr=new
StringBuffer(); |
08 | int
i=0,j=0; |
09 | for(i=0;i<str1.length()+str2.length();i++) |
10 | { |
11 | bstr.append('0'); |
12 | } |
13 | int
k=bstr.length()-1,add=0,temp=0; |
14 | for(j=str2.length()-1;j>=0;j--) |
15 | { |
16 | if(str2.charAt(j)!='0') |
17 | { |
18 | for(i=str1.length()-1;i>=0;i--) |
19 | { |
20 | k=i+j+1; |
21 | temp=(str2.charAt(j)-'0')*(str1.charAt(i)-'0')+(bstr.charAt(k)-'0'); |
22 | bstr.setCharAt(k--, (char)('0'+temp%10)); |
23 | add=temp/10; |
24 | while(add!=0) |
25 | { |
26 | temp=add+bstr.charAt(k)-'0'; |
27 | bstr.setCharAt(k--, (char)('0'+temp%10)); |
28 | add=temp/10; |
29 | } |
30 | } |
31 | } |
32 | } |
33 | return
bstr.substring(firstNotZeroIndex(bstr)); |
34 | } |
35 | |
36 | private
int firstNotZeroIndex(StringBuffer str) |
37 | { |
38 | for(int
i=0;i<str.length();i++) |
39 | if(str.charAt(i)!='0') |
40 | return
i; |
41 | return
str.length()-1; |
42 | } |
43 | |
44 | public
static void
main(String[] args) |
45 | { |
46 | Multiply mul=new
Multiply(); |
47 | Scanner cin=new
Scanner(System.in); |
48 | System.out.print("请输入第一个整数:"); |
49 | String str1=cin.next(); |
50 | System.out.print("请输入第二个整数:"); |
51 | String str2=cin.next(); |
52 | System.out.print("结果是:"); |
53 | System.out.println(mul.mul(str1, str2)); |
54 | } |
55 | } |
本文介绍了一个使用Java实现的字符串乘法算法,通过逐位相乘并累加的方式处理两个字符串形式的大整数相乘的问题。文章详细展示了算法的流程与核心代码。
&spm=1001.2101.3001.5002&articleId=6690797&d=1&t=3&u=d79d785cb460462298e53db7e2fe59ce)
234

被折叠的 条评论
为什么被折叠?



