算法描述:使用int[] input1和int[] input2存储被乘数和乘数,使用int[input1.length+input2.length] result存储计算结果,具体计算过程可以结合代码和示意图理解
import java.util.Scanner;
public class Multiply {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String input1=sc.next();
String input2=sc.next();
if (input1.charAt(0)=='-'){
input1=input1.substring(1);
}
if (input2.charAt(0)=='-'){
input2=input2.substring(1);
}
String result=multiply(input1,input2);
System.out.println("result:"+result);
}
public static String multiply(String num1, String num2) {
//把字符串转成char数组
char[] chars1 = num1.toCharArray();
char[] chars2 = num2.toCharArray();
//声明存放结果和两个乘积的容器
int[] result = new int[chars1.length + chars2.length];
int[] n1= new int[chars1.length];
int[] n2= new int[chars2.length];
//把char转换成int数组。
for (int i =0; i < chars1.length; i++){
n1[i] = chars1[i] - '0';
}
for (int j =0; j < chars2.length; j++){
n2[j] = chars2[j] - '0';
}
//逐个相乘
for (int i = 0; i < chars1.length; i++){
for (int j = 0; j < chars2.length; j++) {
result[i+j] += n1[i] * n2[j];
}
}
//从后往前满十进位
for (int i = result.length -1; i > 0; i--) {
result[i-1] += result[i] / 10;
result[i] = result[i] % 10;
}
//转成string并返回
String resultStr = "";
for (int i = 0; i < result.length - 1; i++) {
resultStr +=result[i];
}
return resultStr;
}
}



