题目要求
题目分析
首先要声明一下,这个题目,我写的代码没有完全通过编译。
我的方法是这样的:
首先是对输入数据的处理,将整行数据以字符串的形式读入,然后通过字符串分割方法用空格字符串将读入的数据分割并保存在一个数组里。
得到数据之后,先分析输入的是否都是数字字符,是的情况下再将其转换成int型的数字并判断是否在0-1000的范围内。
如果这些情况都符合,就输出计算结果,否则,按判断类型输出其他结果。
示例代码
import java.util.Scanner;
public class L1_025 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//读入一行数据
String str = sc.nextLine();
sc.close();
//分割数据项
String[] arr = str.split(" ");
boolean mark1 = true, mark2 = true;
//判断第一个数据是否都是由数字组成的
for(int i = 0; i < arr[0].length(); i++) {
//如果有不是数字的字符,标记状态为非数字并结束判断
if(arr[0].charAt(i) < '0' || arr[0].charAt(i) > '9') {
mark1 = false;
break;
}
}
//同理对第二个数据进行判断
for(int i = 0; i < arr[1].length(); i++) {
if(arr[1].charAt(i) < '0' || arr[1].charAt(i) > '9') {
mark2 = false;
break;
}
}
//当两个数据都是由数字字符组成时,把他们转换成int型数字并判断是否在[1,1000]的区间内
if(mark1 && mark2) {
int num1 = Integer.parseInt(arr[0]);
int num2 = Integer.parseInt(arr[1]);
if(num1 < 1 || num1 > 1000) {
mark1 = false;
}
if(num2 < 1 || num2 > 1000) {
mark2 = false;
}
}
//合法情况,求出两个数的和并根据要求进行显示
if(arr.length == 2 && mark1 && mark2) {
System.out.println(Integer.parseInt(arr[0]) + " + " + Integer.parseInt(arr[1]) + " = " + (Integer.parseInt(arr[0])+Integer.parseInt(arr[1])));
return;
}
if(arr.length > 2 && mark1) {
System.out.println(Integer.parseInt(arr[0]) + " + ? = ?");
return;
}
if(arr.length == 2 && mark1 && !mark2) {
System.out.println(Integer.parseInt(arr[0]) + " + ? = ?");
return;
}
if(arr.length == 2 && !mark1 && mark2) {
System.out.println("? + " + Integer.parseInt(arr[1]) + " = ?");
return;
}
if(!mark1 && !mark2) {
System.out.println("? + ? = ?");
return;
}
}
}