A+B Problem II
背景
新一年的OO课程开始了,HansBug准备给大家寒假增添一点乐趣。
题目描述
这是一个很简单的问题,即求两个十进制整数的和。然而这一次,事情有那么一点不同。
输入格式
第一行包含两个十进制整数,用空格分隔,分别表示 a a a和 b b b。
对于
输出格式
一行,包含一个十进制整数,即为 a + b a+b a+b。
如果输入的数据不合法,则需要输出WRONG FORMAT!
样例
# | 输入 | 输出 | 解释 |
---|---|---|---|
1 | 1 2 | 3 | 显然。 |
2 | 10000 20000 | 30000 | 更加显然。 |
3 | -10000000000 -20000000000 | -30000000000 | 非常显然。 |
4 | -+10000 300000 | WRONG FORMAT! | -+10000整数格式错误。 |
5 | -10000 3000 123 | WRONG FORMAT! | 包含的整数个数不是两个,格式错误。 |
说明
约束信息
- 不保证所有输入的数合法
- 对于一个整数的合法性,判定标准定义为:对于一个整数,应该由一个或多个连续的
0
~9
数字构成(允许任意数量的前导零),且数字开头可以包含一个正号(+
)或者(-
)。 - 对于输入数据的行内,应当包含且仅包含两个合法的整数。
- 如果输入数据违反了上述两条,则需要输出
WRONG FORMAT!
- 对于一个整数的合法性,判定标准定义为:对于一个整数,应该由一个或多个连续的
- 保证所有输入的合法整数满足 ( − 1 0 100000 + 1 ) ≤ a , b ≤ ( 1 0 100000 − 1 ) \left( -10^{100000}+1 \right) \leq a, b \leq \left( 10^{100000}-1\right) (−10100000+1)≤a,b≤(10100000−1)
- 不保证 a a a、 b b b之间仅包含一个空格
- 输出中请不要包含多余的正负号
需要先学习的技能
- 基本的Java语法
- Java的基本io操作(推荐使用
Scanner
) - Java的基本整数数据类型
- (二选一)Java的数组基本操作 / Java的高精度数据类型(具体可以百度)
- 正则表达式的基本使用
这是北航6系面向对象的寒假作业,由于我不是6系的,没助教帮我评测,所以以下代码不保证能完全通过(菜哭呜呜呜)
import java.math.BigInteger;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class second {
public static void main(String[] args){
String reg1="\\s{0,}(\\+|\\-)?\\d+\\s{1,}(\\+|\\-)?\\d+\\s{0,}";
Scanner scan=new Scanner(System.in);
String str=new String();
char x='\0';
if(scan.hasNextLine()){
str=scan.nextLine();//
}
Pattern p=Pattern.compile(reg1);
Matcher m=p.matcher(str);
if(!m.matches()){
System.out.println("Wrong Format");
}
else{
String newstr=str.trim();
System.out.println(newstr);
String bb[]=newstr.split("\\s+");//多个空格为分隔符拆分为字符串数组
BigInteger num0[]=new BigInteger[bb.length];
for(int i=0;i<bb.length;i++){
num0[i]=new BigInteger(bb[i],10);
}
BigInteger sum;
sum=num0[0].add(num0[1]);
System.out.println(sum);
}
}
}