如何使用 Scanner 只接受有效的 int 作为输入

2024-04-16

我正在努力使一个小程序更加健壮,我需要一些帮助。

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while(num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}
  1. 数字 2 必须大于数字 1

  2. 另外,我希望程序自动检查并忽略用户是否输入字符而不是数字。因为现在当用户输入时r程序直接退出,而不是一个数字。


Use Scanner.hasNextInt() http://java.sun.com/javase/6/docs/api/java/util/Scanner.html#hasNextInt%28%29:

Returns true如果此扫描仪输入中的下一个标记可以解释为int使用默认基数中的值nextInt()方法。扫描仪不会前进超过任何输入。

这是一个片段来说明:

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
    while (!sc.hasNextInt()) sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);

你不必parseInt或担心NumberFormatException。请注意,自从hasNextXXX方法不会超越任何输入,您可能需要调用next()如果你想跳过“垃圾”,如上所示。

相关问题

  • 输入错误类型时如何防止扫描仪抛出异常? (java) https://stackoverflow.com/questions/2496239/how-do-i-keep-a-scanner-from-throwing-exceptions-when-the-wrong-type-is-entered
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Scanner 只接受有效的 int 作为输入 的相关文章

随机推荐

  • 如何将 Get-WMIObject 查询中的数据解析为字符串?

    我有以下代码行 get wmiobject class win32 computersystem select object username 它返回 用占位符编辑 username DOMAIN jsmith 需要做什么来删除填充并给我一
  • ActiveRecord“销毁”方法在 Ruby on Rails 中返回布尔值?

    我正在使用 Ruby on Rails 3 我想知道什么类型的返回将具有以下代码 user destroy 我需要它来处理案件success and fault以这样的方式 if user destroy puts True else pu
  • 在 Azure Web 应用程序上找不到证书

    我将 Web 应用程序部署为 Azure 应用服务上的 Web 应用程序 我将一些证书上传到 Azure 门户 因为 Web 应用程序通过 SSL 运行 并且我们使用另一个证书来执行一些解密 对于后一种情况 我有一种方法 在本地工作正常 来
  • 我应该将“orderby group.key”放在这个 LINQ 语句中的什么位置?

    这段代码 string words car boy apple bill crow brown var groups from w in words group w by w 0 into g select new FirstLetter
  • 如何区分刷新触发的Unload事件还是窗口关闭触发的Unload事件?

    刷新操作和窗口关闭操作都可以触发卸载事件 有没有办法区分实际触发它的操作 在我的情况下 我想忽略刷新操作 您能给我一些解决办法吗 我注意到已经有这种question https stackoverflow com questions 568
  • 在 WinForm 上禁用最小化和最大化?

    WinForms 在右上角有三个框 分别用于最小化 最大化和关闭窗体 我想要做的是删除最小化和最大化 同时保持关闭 我还想使关闭最小化表单而不是关闭它 如何才能做到这一点 The Form有两个属性称为MinimizeBox and Max
  • 如何检查何时为特定 dag 安排了下一次 Airflow DAG 运行?

    我已设置气流并运行一些 DAG 安排每天一次 0 0 我想检查下次计划运行特定 dag 的时间 但我看不到可以在管理员中执行此操作的位置 如果你愿意 你可以使用Airflow s CLI 有next execution option htt
  • 如何在 gcc 内联汇编中声明和初始化局部变量而不使用扩展内联 asm?

    我知道这是一个非常基本的问题 但我真的很困惑 事实上我绝对是 GCC 语法的新手 我想要拥有局部变量 带有标签的堆栈地址 而不使用扩展内联汇编 类似 Intel 语法中的以下代码 DATA1 DB 100 MOV AL DATA1 我猜这是
  • MySQL / 经典 ASP - 参数化查询

    在绝对紧急的情况下 我正在尝试浏览我的网站并添加参数化查询 我是新手 刚刚了解它们 我的问题是 我对连接类型知之甚少 并且我看到的所有示例都使用另一种连接方法 这让我感到困惑 我并不是特别想改变连接到数据库的方式 因为它位于很多页面上 我只
  • 如何使用 C# 从 Excel 工作表中删除 VB 代码?

    有谁知道怎么删除all使用 C 的 VB 代码形成 Excel 工作簿 这段代码不起作用 它删除第一个 最后一个 VBComponent 但在第二个VBComponent上引发ArgumentException VBProject proj
  • 形成 Mockito“语法”

    Mockito 看起来像是一个非常可爱的 Java 存根 模拟框架 唯一的问题是我找不到任何关于使用他们的 API 的最佳方法的具体文档 测试中常用的方法包括 doXXX Stubber when T OngoingStubbing the
  • 如何绘制 UIBezierPath

    这就是我想做的 我有一个 UIBezierPath 我想将它传递给某种方法来绘制它 或者简单地从创建它的方法中提取它 我不确定如何指示应在哪个视图中绘制它 所有绘图方法都必须以 void drawRect CGRect rect 我可不可以
  • Visual Studio 2017 无法修改 - 需要重新启动

    我已经尝试更新和修改 Visual Studio 2017 两天了 但每次运行 Visual Studio 安装程序时 我都会收到以下消息 需要重新启动 如果需要 任何剩余的设置都将恢复 重启后 显然我重新启动了大约10次 知道我必须删除什
  • 外部 jQuery 根本不执行

    下面的代码放在里面时完全可以工作运行页面上的标签 我后来把代码移到了外面 js用于组织目的的文件导致代码停止工作 当应触发某些事件时没有任何反应 我确保脚本包含在给定页面上 此外 我通过 查看源 确保链接有效 当我单击脚本的路径时 脚本会在
  • Pycharm 在移动现有虚拟环境或删除并创建新虚拟环境后忽略新虚拟环境

    如果我在创建项目时允许PyCharm创建虚拟环境 则删除或移动venv文件夹 它不会让我选择一个新文件夹 我可以进入设置中的 Python 解释器菜单 然后选择我自己创建的现有解释器 注意 brokenInterpreter oldFold
  • 在 VBS 中使用环境变量的值时出现问题

    我是 VBScript 新手 编写了一个可以修改 XML 文件的小脚本 但我在将计算机名称放入 XML 时遇到问题 我从以下位置获取了计算机名称HOST使用这些行的环境变量 Set wshShell CreateObject WScript
  • DEP0800:升级到 VS 2015 Update 3 后无法部署 UWP 应用

    升级到 VS 2015 Update 3 后 我很难让我的 UWP 应用程序在调试模式下部署 2 gt 检查是否安装了所需的框架 2 gt 框架 Microsoft VCLibs 140 00 Debug x86 当前未安装应用程序包版本1
  • getline 跳过第一个输入字符 c++ [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 所以我制作
  • awk 中的提示和技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 Scanner 只接受有效的 int 作为输入

    我正在努力使一个小程序更加健壮 我需要一些帮助 Scanner kb new Scanner System in int num1 int num2 0 System out print Enter number 1 num1 kb nex