使用 Scanner 读取输入会导致 Java 中的无限循环[重复]

2024-01-03

在我的程序中,我试图让用户输入 1-3 之间的整数,然后根据他们输入的内容执行某些操作。如果它不是数字或不是选项之一,那么它将允许他们重新输入有效选项。

我遇到的问题是,我很难集思广益,如何不让它无限循环,并在控制台告诉他们输入无效输入后允许他们输入数字。

int i = 0;
while (i < 1) {
    try {
        int level = scan.nextInt();
        i+=1;
        if (level == 1) {
            System.out.println("You selected level 1!");
            //Start the game
        } else if (level == 2) {
            System.out.println("You selected level 2!");
            //Start the game
        } else if (level == 3) {
            System.out.println("You selected level 3!");
            //Start the game
        } else {
            System.out.println("That's not an option!");
            i-=1;
        }
    } catch(InputMismatchException input) {
        System.out.println("That's not an option!");
        i-=1;
    }
}

当您输入无效的输入时,需要将其清除。添加scan.next()当输入异常触发时清除它next() http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next%28%29:

 catch(InputMismatchException input) {
        System.out.println("That's not an option!");
        scan.next();
        i-=1;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Scanner 读取输入会导致 Java 中的无限循环[重复] 的相关文章

  • 从 java sdk 向对等方发送提案时出现访问被拒绝错误

    我正在尝试使用以下代码查询区块链并收到访问被拒绝错误 我也遇到同样的错误sendTransactionProposal方法也是如此 UserContext adminUserContext RegisterEnrollUser regist
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • ICU 资源包是否用于消息翻译资源

    我了解 ICU 的本地化部分 日期 时间和货币格式 排序规则等 当谈到消息翻译时 我看到人们说 ICU 不提供消息翻译功能 例如检查这个 SOF 问题 https stackoverflow com questions 5644412 ph
  • 工作单元模式的实现

    我首先使用 ASP NET MVC 和实体框架代码创建一个应用程序 我正在使用存储库和工作单元模式 并受到以下链接的影响 http www asp net mvc tutorials getting started with ef 5 us
  • Intellij 在新块中添加额外的行

    当我在 Intellij 中编写代码时 我经常通过键入以下类型的序列来创建新块 if test 键入左大括号会导致 Intellij 自动插入右大括号并将光标移动到两个大括号之间 if test 此时 我只需按 Enter 即可获得一个格式
  • 谷歌地图打开时的信息窗口事件

    您好 我正在使用谷歌融合表和谷歌地图 问题是我的标记显示正确 但我想在信息窗口中插入一些图像 所以问题是我进行查询来查找这些标记的位置 并且这些标记可以有许多类别 这就是为什么我无法使用合并表 当用户单击标记时 信息窗口将显示并显示标记上的
  • Java URL:未知协议“C”

    我知道有similar对这个问题的提问 比如this https stackoverflow com questions 7243550 unknown protocol c jdom a saxbuilder一 但是 在读完 类似标题的问
  • Facebook 如何禁用浏览器的集成开发人员工具?

    显然 由于最近的诈骗 开发人员工具被人们利用来发布垃圾邮件 甚至用于 破解 帐户 Facebook 屏蔽了开发者工具 我什至无法使用控制台 他们是怎么做到的 Stack Overflow 上的一篇帖子声称这是不可能的 https stack
  • Angular2 - 具有登录结构的路由器出口

    我正在构建 angular2 应用程序 目前我有一个带有导航栏 工具栏和路由器出口的主组件用于主要内容 我想为登录机制添加一个额外的页面 因此 如果用户未经过身份验证 登录页面将显示在整个屏幕上 用户登录后将导航到具有上述结构的组件 我该如
  • 使用pm2将环境变量传递给node.js

    我正在尝试将一些参数传递给由 pm2 运行的 Express 应用程序 他们的文档中没有任何提示这样做 但显然可以将一些 EV 传递到您的节点应用程序 例如SOME STUFF xxx pm2 start app js 注意 更新环境中的环
  • Spring Integration 中下游流完成后,如何从队列中一次轮询 1 条消息

    我目前正在努力提高集成流程的性能 尝试并行化消息处理 我已经使用 Java DSL 实现了所有内容 当前的集成流程从具有固定轮询器的队列通道获取消息 并通过多个处理程序依次处理该消息 直到到达最终处理程序 该处理程序会考虑前一个处理程序的每
  • 未捕获的 ReferenceError:无法处理与 Ajax 的绑定

    我有两个分层的 MVC4 NET 应用程序 带有 DAL 层和 Web 层 我在尝试将数据与 Ajax 返回的数据绑定时遇到问题 在 Html 上 我试图获取 SubcriteriaList 成员并在填写每个成员的值时为每个成员创建表 HT
  • 我们是否可以设置持久的默认参数,这些参数在明确更改之前一直保持设置状态?

    下面是一个函数fn预期结果是a b c在每次调用时定义fn 是否传递对象参数 如果传递设置属性的对象 则应仅为该对象设置属性 const fn opts a 1 b 2 c 3 gt console log opts 当不带参数调用时 结果
  • C unix 域套接字,recvfrom() 未设置 struct sockaddr* src_addr

    我正在编写一个通过 unix 域套接字侦听 UDP 数据包的应用程序 考虑以下代码块 int sockfd struct sockaddr un servaddr sockfd socket AF LOCAL SOCK DGRAM 0 if
  • 将插件版本集中在(类似于)BOM 中?

    我开始使用 BOM 来集中项目中常见依赖项的版本 但是 它似乎不适用于插件版本 如果我在 BOM 中添加一个 pluginManagement 部分 那么在那里声明的插件版本似乎不会影响导入 BOM 的项目的插件版本 Maven 抱怨版本尚
  • 在 Haskell 中构造循环列表的最便宜的方法

    那么 如果我想构造一个由 n 个 0 和 1 个 1 组成的循环列表 以下哪种方法更好 更便宜 还有更好 更便宜的方法吗 考虑到 n 是Integer并且可能很大 尽管实际上它不会超过 2 32 aZerosAndOnes Integer
  • 循环访问多个组件链接以获取 SDL Tridion 2011 中 Dreamweaver TBB 中链接组件的架构名称

    我正在研究 Dreamweaver 模板构建块并为页面实现 SiteEdit 我正在使用 SDL Tridion 2011 SP1 和 Site Edit 2012 以及默认 Dream Weaver 模板 我的架构有一个 组件链接 类型的
  • 如何使用 Express 提供部分动态 HTML 页面?

    好吧 这是我的问题 我有一个我很满意的 HTML 页面 但我希望使其动态 我正在使用 Node 和 Express 我想知道是否有任何方法可以修改然后渲染纯 HTML 我不会使用 Jade 或任何其他模板引擎 我的服务器 js var ht
  • 以编程方式旋转显示器?

    我正在寻找一种以编程方式旋转其中一台显示器的显示的方法 我在桌面上安装了两台显示器 在编程或使用各种其他程序时 我经常以不同的方向使用它们 为了改变方向 我跳入显示设置并以这种方式旋转它 这样我就可以有一个或两者都是纵向 可以说我很懒 因为
  • 是否可以获得正在运行的应用程序窗口的完整列表?

    我正在尝试获取 macOS 上正在运行的应用程序的列表 以便在全屏应用程序上进行一些具体的窗口操作 首先 我通过以下方式获取所有正在运行的应用程序的列表 NSWorkspace sharedWorkspace runningApplicat
  • 相当于 C++ std::set precision(20) 在 C 中使用 printf

    我想以十进制表示法以全精度打印双精度数 但在数字末尾没有额外的零 在 C 中我可以使用 std setprecision 20 cout lt lt d Here d is a double 使用 printf 的等效 C 代码是什么 您可
  • 使用 Scanner 读取输入会导致 Java 中的无限循环[重复]

    这个问题在这里已经有答案了 在我的程序中 我试图让用户输入 1 3 之间的整数 然后根据他们输入的内容执行某些操作 如果它不是数字或不是选项之一 那么它将允许他们重新输入有效选项 我遇到的问题是 我很难集思广益 如何不让它无限循环 并在控制