由于大整数的加减乘除所得结果的位数可能很长,甚至超过32位,所以一般都用字符串或者数组存储进行运算
比如 :求 1234 + 456
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//输入两个字符串类型的大数字
String s1 = in.nextLine();
String s2 = in.nextLine();
String result = add(s1, s2);
System.out.println(result);
}
private static String add(String s1, String s2) {
//保证s1小于或等于s2的长度,方便后面补0
if(s1.length() > s2.length()) {
String temp = s1;
s1 = s2;
s2 = temp;
}
int cha = s2.length() - s1.length();
for(int i=0; i=0; i--) {
//从s1和s2中取出的是字符,所有减去48得到的就是 int类型的数字,再加上进位就是当前位的结果
int c = s2.charAt(i) + s1.charAt(i) - 96 + w;
w = c / 10; //两个一位的int类型数字相加最大是十几,所有除以10就是进位
result = (c%10) + result;
}
//因为上面的循环没有判断加到第一位时的进位,所以在最后判断一下
if(w == 1) result = 1 + result;
return result;
}
}
代码思路 : 多位数乘多位数,用其中一个多位数的每一位单独乘以另一个多位数,再把所得的乘积全部累加起来。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();//输入两个数字
String s2 = sc.nextLine();
String result = muilt(s1,s2);
System.out.println(result);
}
private static String muilt(String s1,String s2) {
String result = "";
//******************核心步骤开始***************************
for(int i=0; i=0; i--) {
int m = (s1.charAt(i)-'0')*n+w;
w = m/10;
result = m%10 + result;
}
if(w != 0) result = w + result;
return result;
}
//累加的方法
private static String add(String s1, String s2) {
if(s1.length() > s2.length()) {
String t = s1;
s1 = s2;
s2 = t;
}
int cha = s2.length() - s1.length();
for(int i=0; i=0; i--) {
int c = s2.charAt(i)+s1.charAt(i)-96+w;
w = c/10;
result = (c%10) + result;
}
if(w==1) result = 1+result;
return result;
}
//给得到的乘积后面补0
private static String add_0(String temp, int i) {
for(int j=0; j
参考博客:https://blog.csdn.net/u014298282/article/details/84197619
***************************************** 结束喽!* _ * ************************************************