0

0

如何在 Java 中正确验证用户输入的数字范围(0 < x ≤ 180)

聖光之護

聖光之護

发布时间:2026-02-02 10:32:00

|

189人浏览过

|

来源于php中文网

原创

如何在 Java 中正确验证用户输入的数字范围(0 < x ≤ 180)

java 不支持直接用 `>` 或 `

在 Java 中,字符串不能使用 > 或 ——这会导致编译错误。即使编译通过(例如在某些误用场景下),"100".compareTo("18") 等字典序比较也会产生错误逻辑(因为 "100"

因此,针对“要求用户输入一个介于 0 和 180 之间的整数(但变量暂存为 String)”这一需求,正确的做法是:立即解析并验证数值,而非对字符串做伪数值比较

✅ 推荐实现:封装健壮的输入验证方法

以下是一个生产就绪的工具方法,兼顾类型安全、异常处理与用户体验:

import java.util.Scanner;

public class InputValidator {
    public static int lireNombreDansPlage(String prompt, int minInclus, int maxInclus) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.print(prompt);
            String input = scanner.nextLine().trim();

            // 空输入防护
            if (input.isEmpty()) {
                System.out.println("Erreur : entrée vide. Veuillez saisir un nombre.");
                continue;
            }

            try {
                int value = Integer.parseInt(input);
                if (value > minInclus && value <= maxInclus) {
                    return value; // ✅ 符合条件,返回数值
                } else {
                    System.out.printf("Erreur : le nombre doit être strictement supérieur à %d et inférieur ou égal à %d.\n", 
                                      minInclus, maxInclus);
                }
            } catch (NumberFormatException e) {
                System.out.println("Erreur : ce n'est pas un nombre valide (ex. : 'abc', '12.5', '-')");
            }
        }
    }

    // 使用示例
    public static void main(String[] args) {
        int nbJoursLouer = lireNombreDansPlage(
            "Entrez le nombre de jours de location (supérieur à 0 et inférieur ou égal à 180) : ", 
            0, 180
        );
        System.out.println("✅ Saisie valide : " + nbJoursLouer + " jours");
    }
}

⚠️ 关键注意事项

  • 不要尝试字符串数值比较:"10" > "2" 在 Java 中非法;"10".compareTo("2") > 0 返回 false(因字典序 '1'
  • Integer.parseInt() 必须配合 try-catch:任何非数字字符(如 "d"、" "、""、"12.3")都会抛出 NumberFormatException,不捕获则程序终止。
  • 边界逻辑需精确:题目要求 “大于 0 且小于等于 180”,对应代码应为 value > 0 && value
  • 建议尽早转为 int 类型:业务逻辑中应操作数值类型,而非长期持有字符串——既提升语义清晰度,也避免重复解析开销。

通过该方案,你不仅能优雅处理字母、空值、小数等非法输入,还能确保数值范围校验 100% 准确,真正实现健壮、用户友好的交互式输入验证。

小鸽子助手
小鸽子助手

一款集成于WPS/Word的智能写作插件

下载

立即学习Java免费学习笔记(深入)”;

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

1

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

0

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

0

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

52

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

25

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

10

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

7

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

417

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3.1万人学习

C# 教程
C# 教程

共94课时 | 8.2万人学习

Java 教程
Java 教程

共578课时 | 55万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号