仅考虑整数的乘法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建 Scanner 对象
// 循环读取输入数据
while (sc.hasNext()) {
String stra, strb;
stra = sc.nextLine(); // 读取输入的第一行
strb = sc.nextLine(); // 读取输入的第二行
int a[] = new int[stra.length()]; // 初始化数组 a,长度为输入的第一行字符串长度
int b[] = new int[strb.length()]; // 初始化数组 b,长度为输入的第二行字符串长度
int c[] = new int[stra.length() + strb.length()]; // 初始化数组 c,长度为两个字符串长度之和
Arrays.fill(c, 0); // 数组 c 中所有元素初始化为 0
for (int i = 0; i < stra.length(); i++) {
a[i] = stra.charAt(stra.length() - 1 - i) - '0'; // 字符串 stra 中每个字符转化为 int 类型存储在数组 a 中
}
for (int i = 0; i < strb.length(); i++) {
b[i] = strb.charAt(strb.length() - 1 - i) - '0'; // 字符串 strb 中每个字符转化为 int 类型存储在数组 b 中
}
for (int i = 0; i < stra.length(); i++) {
for (int j = 0; j < strb.length(); j++) {
c[i + j] += a[i] * b[j]; // 计算乘积,存储在 c[i+j] 中
c[i + j + 1] += c[i + j] / 10; // 进位
c[i + j] %= 10; // 取余
}
}
int k = c.length - 1; // k 为数组 c 最后一位的下标
while (k > 0 && c[k] == 0) { // 去除前导 0
k--;
}
for (; k >= 0; k--) { // 从高位到低位输出数组 c 的元素
System.out.print(c[k]);
}
System.out.println(""); // 每组数据输出完毕后换行
}
}