PAT团队程序设计天梯赛-习题集L1-025 正整数A+B

本文介绍了一个Java程序示例,该程序用于接收用户输入的两个整数,并验证其是否为有效数字及是否位于指定范围内。对于有效的输入,程序会输出两数之和;对于无效的输入,则会给出相应的提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求

题目分析

首先要声明一下,这个题目,我写的代码没有完全通过编译。

我的方法是这样的:

首先是对输入数据的处理,将整行数据以字符串的形式读入,然后通过字符串分割方法用空格字符串将读入的数据分割并保存在一个数组里。

得到数据之后,先分析输入的是否都是数字字符,是的情况下再将其转换成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;
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值