PTA 正整数A+B Java

PTA 正整数A+B Java

题的目标很简单,就是求两个正整数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:
? + ? = ?

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		Reader.init(System.in);
		Writer.init(System.out);
		slove();
		Writer.close();
	}

	// 解答入口
	static void slove() throws IOException {
		String str = Reader.nextLine();
		String[] strs = str.split(" ");
		String aS = strs[0];
		String bS = strs[1];

		Integer a = null, b = null;
		try {
			a = Integer.parseInt(aS);
			if (a < 1 || a > 1000) {
				Writer.print("?");
				a = null;
			} else {
				Writer.print(a);
			}
		} catch (Exception e) {
			Writer.print("?");
		}
		Writer.print(" + ");
		try {
			b = Integer.valueOf(bS);
			// 避免以空格结尾
			if (b < 1 || b > 1000 || strs.length > 2) {
				Writer.print("?");
				b = null;
			} else {
				Writer.print(b);
			}
		} catch (Exception e) {
			Writer.print("?");
		}
		Writer.print(" = ");
		if (a == null || b == null)
			Writer.print("?");
		else
			Writer.print(a + b);

	}

}

// 以下是输入输出模板和思路逻辑无关
class Reader {
	static BufferedReader reader;
	static StringTokenizer tokenizer;

	static void init(InputStream input) {
		reader = new BufferedReader(new InputStreamReader(input));
		tokenizer = new StringTokenizer("");
	}

	static String next() throws IOException {
		while (!tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}

	static String nextLine() throws IOException {
		return reader.readLine();
	}

	static int nextInt() throws IOException {
		return Integer.parseInt(next());
	}

	static long nextLong() throws IOException {
		return Long.parseLong(next());
	}

	static char nextChar() throws IOException {
		return next().toCharArray()[0];
	}

	static float nextFloat() throws IOException {
		return Float.parseFloat(next());
	}

	static Double nextDouble() throws IOException {
		return Double.parseDouble(next());
	}

}

class Writer {
	static BufferedWriter writer;

	static void init(OutputStream outputStream) {
		writer = new BufferedWriter(new OutputStreamWriter(outputStream));
	}

	static void print(Object object) throws IOException {
		writer.write(object.toString());
	}

	static void println(Object object) throws IOException {
		writer.write(object.toString());
		writer.write("\n");
	}

	static void close() throws IOException {
		writer.close();
	}
}


发布了27 篇原创文章 · 获赞 2 · 访问量 1481

猜你喜欢

转载自blog.csdn.net/Samil_Hy/article/details/104196078