L1-025 正整数A+B (15 分)
题的目标很简单,就是求两个正整数A 和B 的和,其中A 和B 都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。
输入格式:
输入在一行给出A 和B ,其间以空格分开。问题是A 和B 不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A 和B 的分隔。题目保证至少存在一个空格,并且B 不是一个空字符串。
输出格式:
如果输入的确是两个正整数,则按格式A + B = 和 输出。如果某个输入不合要求,则在相应位置输出? ,显然此时和也是? 。
输入样例1:
123 456
输出样例1:
123 + 456 = 579
输入样例2:
22. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla...33
输出样例3:
? + ? = ?
Java 代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
String r1 = s.substring(0, s.indexOf(' '));
String r2 = s.substring(s.indexOf(' ') + 1, s.length());
String s1 = "", s2 = "", s3 = "";
int n1 = 0, n2 = 0;
try {
int x1 = Integer.parseInt(r1);
if (x1 < 1 || x1 > 1000) {
s1 = "?";
s3 = "?";
}
n1 = x1;
} catch (NumberFormatException e) {
s1 = "?";
s3 = "?";
}
try {
int x2 = Integer.parseInt(r2);
if (x2 < 1 || x2 > 1000) {
s2 = "?";
s3 = "?";
}
n2 = x2;
} catch (NumberFormatException e) {
s2 = "?";
s3 = "?";
}
System.out.print(s1.equals("") ? n1 + " + " : s1 + " + ");
System.out.print(s2.equals("") ? n2 + " = " : s2 + " = ");
System.out.println(s3.equals("") ? n1 + n2 : s3);
}
}
测试点3分析:
需要注意的是,使用 BufferedReader 读取数据时不能使用split 按空格来拆分字符串,因为题目要求
输入在一行给出A 和B ,其间以空格分开
如果输入的数据存在多个空格,并且第一个空格的前后两个数字刚好符合要求,答案就错了
比如像这样
123 123 kjaksdj
就会返回123 + 123 = 246 ,正确的结果应该是? + ? = ?
|