Java.util.scanner 错误处理

2023-11-22

我正在帮助一个朋友解决java问题。然而,我们遇到了障碍。我们使用 Java.Util.Scanner.nextInt() 从用户那里获取一个号码,不断询问用户是否提供了其他信息。唯一的问题是,我们不知道如何进行错误处理。

我们尝试过的:

do {
  int reloop = 0;
  try {
    number = nextInt(); 
  } catch (Exception e) {
    System.out.println ("Please enter a number!");
    reloop ++; 
  }
} while(reloop != 0);

唯一的问题是,如果您输入的不是数字,则会无限循环。

有什么帮助吗?


您可以使用hasNextInt()验证Scanner如果你做的话就会成功nextInt()。您还可以调用并丢弃nextLine()如果你想跳过“垃圾”。

所以,像这样:

Scanner sc = new Scanner(System.in);
while (!sc.hasNextInt()) {
   System.out.println("int, please!");
   sc.nextLine();
}
int num = sc.nextInt();
System.out.println("Thank you! (" + num + ")");

也可以看看:

  • 输入错误类型时如何防止扫描仪抛出异常? (java)

除了不必要的冗长错误处理之外,您的代码存在问题,因为您让nextInt()扔一个InputMismatchException而不是检查hasNextInt(),就是当它does抛出异常,你不推进Scanner过去有问题的输入!这就是为什么你会得到无限循环!

您可以调用并丢弃nextLine()来解决这个问题,但更好的是如果你使用无异常hasNextInt()而是采用上面介绍的预检查技术。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java.util.scanner 错误处理 的相关文章

随机推荐

  • 使用后备语言检索 i18n 数据

    我必须从数据库中获取 i18n 文本 默认语言为英语 其文本为一切 但非英语语言不一定具有所有所需的翻译 如果某个实体 键的非英语翻译在数据库中不可用 那么我希望它返回英语文本 所以 英语是fallback这里的语言 i18n 文本表如下所
  • 如何使用 CMake 有选择地链接到静态或动态 boost 库?

    我有一个 CMake 项目 有时想针对静态 boost 库进行编译 但我也希望能够轻松地使用 cmake GUI 中的动态库 在我的顶级 CMakeLists txt 中 我有以下内容 option USE STATIC BOOST Bui
  • jQuery 中的节流事件调用

    我有一个keyup事件绑定到需要大约四分之一秒才能完成的函数 search keyup function code that takes a little bit to complete 当用户键入整个单词或以其他方式快速按键时 该函数将连
  • 使用pyspark,在hadoop文件系统上读/写2D图像

    我希望能够在 hdfs 文件系统上读取 写入图像并利用 hdfs 局部性 我有一个图像集合 其中每个图像由以下内容组成 uint16 的二维数组 存储为 xml 文件的基本附加信息 我想通过 hdfs 文件系统创建一个存档 并使用 Spar
  • jQuery Mobile 破坏了我的网站

    当我仅使用移动触摸屏设备时 我会在网站上加载 jQuery Mobile 当我这么做的时候 它把一切都搞乱了 例如 选择菜单也不能正常工作 页面底部会出现 正在加载 正在加载 未定义 字样 我知道我错过了一些东西 但不知道是什么 关于我可能
  • JavaScript 对象的生命周期和内存泄漏

    我对此进行了相当多的研究 但主要是通过将其他问题拼凑在一起 这仍然留下了一些疑问 在一个不随时刷新浏览器页面并且可能会运行相当长一段时间 几个小时 而不关闭的应用程序中 假设刷新页面或导航到另一个页面会重新启动 js 代码 确保对象的最佳方
  • TypeScript:具有可选值的可区分联合

    给定以下类型 interface FullName fullName string interface Name firstName string lastName string type Person FullName Name cons
  • 友元函数无法构造该类的唯一指针

    我有一个特定的设计策略 其中我的类的构造函数是私有的 并且只能由该类的朋友构建 在朋友函数中 我尝试使用以下命令创建我的类的 unique pointerstd make unique但它不编译 我的 VC12 编译器抱怨 c progra
  • 编写并编织一份按变量与特殊字符 (å æ ø) 分割的 PDF 报告 - 编码问题

    我尝试使用基于分组变量的部分来生成一份 PDF 报告brew and knitr 我的分组变量可能包含特殊字符 元音变音 例如 仅文档标题中的变音符号可以很好地处理 usepackage utf8 inputenc 参见下面的示例 但是 分
  • 为什么 jquery .height() 在 chrome 上得到不同的结果?

    这是 chrome 显示 div 的宽度和高度的方式 这是正确的 事实上高度是 1466 但是 如果我这样做 document ready function console log container altezza fisso heigh
  • Javascript 到 Jquery,在输入 onclick 中添加文本

    我怎样才能将这个javascript代码更改为JQuery 当用户单击链接时 文本会自动添加到输入中 这是 HTML
  • NginX 不执行 PHP

    我已经尝试过数十种可能的解决方案来解决这个问题 但找不到任何有效的解决方案 基本上 PHP 文件不会在我的 NginX PHP fpm Ubuntu 14 服务器上执行 我拥有所有软件包 并且它们正在运行 我已经清除了浏览器缓存等 但还没有
  • 重载和覆盖

    重载和覆盖有什么区别 超载 重载是指同一范围内有多个具有相同名称但不同签名的方法 Overloading public class Test public void GetStuff int id public void GetStuff
  • MVVM轻信使类

    任何人都可以提供有关如何在 MVVM Light 中使用信使类的示例 链接 简单插图 视频 演示吗 您应该查看 CodePlex 上 MVVM Light 的源代码 http mvvmlight codeplex com SourceCon
  • 仅调用一次函数

    我有 3 个 div Mask Intro Container 因此 如果您单击 蒙版 介绍 将被隐藏 而 容器 将出现 问题是我只想加载一次 而不是每次刷新页面或每次单击菜单或链接等时加载 我怎样才能做到这一点 这是我现在使用的脚本 do
  • CSS,覆盖所有选择下拉菜单的高度?

    我将如何引用 以便我可以覆盖所有选择框 以便我可以覆盖默认高度 当我使用类创建元素时我很熟悉 但我对此不确定 100 JS 解决方案 使用 jquery select height 120px 100 JS 解决方案 无 jquery va
  • 捕获组字符数限制

    假设我有这样的文字 AAAA1 AAA11 AA111AA A1111 AAAAA AAAA1111 我想找到所有符合这 3 个条件的事件 大写字母 1 至 4 次 数字1到4次 最大字符数为 5 所以比赛将是 AAAA1 AAA11 AA
  • 将数据流管道的输出写入分区目标

    我们有一个流事件源 每秒有数千个事件 这些事件都标有一个 ID 用于标识该事件属于我们数以万计的客户中的哪一个 我们希望使用此事件源来填充数据仓库 在流模式下 但是 我们的事件源不是持久的 因此我们还希望将原始数据存档在 GCS 中 以便我
  • HTML5 Canvas 使黑色透明

    我有大量黑色背景的图像 例如 是否有可能通过Javascript忽略黑色 000000 并将其绘制在画布上 出现这样的情况 基本上是尝试获取黑色像素并使其成为 Alpha 通道 因此 您需要遍历所有像素并更改所有黑色像素的 alpha 值
  • Java.util.scanner 错误处理

    我正在帮助一个朋友解决java问题 然而 我们遇到了障碍 我们使用 Java Util Scanner nextInt 从用户那里获取一个号码 不断询问用户是否提供了其他信息 唯一的问题是 我们不知道如何进行错误处理 我们尝试过的 do i