
本文介绍如何使用java读取用户输入的整数,自动将负数转为正数,并判断其是否在0到100(含端点)的有效范围内,同时提供健壮、简洁且符合编程规范的实现方案。
本文介绍如何使用java读取用户输入的整数,自动将负数转为正数,并判断其是否在0到100(含端点)的有效范围内,同时提供健壮、简洁且符合编程规范的实现方案。
在Java编程入门实践中,常需处理用户输入的数值校验任务:既要确保输入在指定区间内(如 0–100),又要容错处理非法值(如负数)。题中需求明确——接收一个整数,若为负则取其绝对值;再判断该非负整数是否落在 [0, 100] 范围内。关键在于逻辑清晰、代码简洁,避免冗余分支和潜在错误(如原代码中误用未定义变量 user1、重复条件判断、语义混淆等)。
以下是推荐的完整实现:
import java.util.Scanner;
public class NumberRangeValidator {
public static void main(String[] args) {
final int MIN = 0;
final int MAX = 100;
Scanner input = new Scanner(System.in);
System.out.print("Enter a number between " + MIN + " and " + MAX + " inclusive: ");
int number = Math.abs(input.nextInt()); // 自动转为非负数
if (number >= MIN && number <= MAX) {
System.out.println("A correct number was entered.");
} else {
System.out.println("An incorrect number was entered.");
}
input.close(); // 避免资源泄漏,良好实践
}
}✅ 核心要点说明:
- Math.abs() 是处理“负数转正”的标准、安全方式,比手动乘 -1 更可靠(尤其对 Integer.MIN_VALUE 等边界值也适用);
- 使用 final 常量定义范围上下限,提升可读性与可维护性;
- 采用单一复合布尔表达式(>= MIN &&
- 明确关闭 Scanner(input.close()),防止资源泄露——这是生产级代码的重要习惯。
⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- 本方案未做输入类型异常处理(如用户输入字母)。如需更强健性,建议用 hasNextInt() 预检或配合 try-catch 捕获 InputMismatchException;
- Math.abs() 对 Integer.MIN_VALUE 会返回其本身(因补码溢出),但在此题场景(0–100校验)中,该值远超上限,最终仍归入“incorrect”分支,不影响业务逻辑正确性;
- 输出语句应以句号结尾并保持中英文标点统一,增强专业性。
综上,通过合理运用 Math.abs() 和清晰的范围判断,即可高效、准确地完成题目要求。掌握此类基础输入处理模式,是构建可靠交互式程序的重要一步。










