java题目 HJ57 高精度整数加法

描述

输入两个用字符串 str 表示的整数,求它们所表示的数之和。
 
数据范围: 1 \le len(str) \le 10000 \1len(str)10000 

输入描述:

输入两个字符串。保证字符串只含有'0'~'9'字符

输出描述:

输出求和后的结果

示例1

输入:
9876543210
1234567890
输出:
11111111100

 

 1 import java.util.Scanner;
 2 import java.math.BigInteger;
 3 
 4 public class Main {
 5     public static void main(String[] args) {
 6         Scanner scan = new Scanner(System.in);
 7         while (scan.hasNext()) {
 8             String s1 = scan.next();
 9             String s2 = scan.next(); //输入两个数
10             disp(s1, s2);
11         }
12     }
13     
14     public static void disp(String s1, String s2) {
15         int m = s1.length() -1;
16         int n = s2.length() -1;
17         StringBuffer sf = new StringBuffer();
18         int carry = 0;  //进位使用
19         while(m >=0 || n >=0) {
20             char c1 = m >= 0 ? s1.charAt(m--) : '0';  //取字符串最后一位相加,当字符串没有后用‘0’替换
21             char c2 = n >= 0 ? s2.charAt(n--) : '0';
22             int number =  c1-'0' + c2 -'0' + carry;  //末尾两位字符相加的和
23             sf.append(number % 10);  //当前末尾相加后的值
24             carry = number / 10;  //进位的值
25         }
26         if(carry == 1)  //最后的进位为1,则添加1位
27             sf.append(carry);
28         System.out.println(sf.reverse());  //字符串倒置后输出即为和
29     }
30 }

 

 

方法二

java 大整数运算

 1 import java.util.Scanner;
 2 import java.math.BigInteger;
 3  
 4 public class Main {
 5     public static void main(String[] args) {
 6         Scanner scan = new Scanner(System.in);
 7         while (scan.hasNext()) {
 8             String s1 = scan.next();
 9             String s2 = scan.next(); //输入两个数
10             BigInteger a = new BigInteger(s1); //将字符串转成大整数
11             BigInteger b = new BigInteger(s2);
12             System.out.println(a.add(b)); //大整数相加
13         }
14     }
15 }

 

posted @ 2022-03-12 17:05  海漠  阅读(214)  评论(0编辑  收藏  举报