输入错误,catch 无限循环

try-catch语句中的while循环问题 try-catch语句中的while循环问题 无限循环问题 在今天的课堂练习中,我想实现在try-catch语句中实现循环输入, 即为当输入错误时,捕获异常输出,且可以重新输入。 第一次编写的代码:(此代码存在bug) package 异常; import java.io.Console; import java.util.Scanner; import javax.management.RuntimeErrorException; public class Test4 { public stati 阅读详情

我想达到的效果就是,如果输入的不是一个int型,就捕获一个异常并提示用户重新输入,但是实际执行结果是,如果输入了一个错误的id1,就会无限循环catch中的代码,而不会允许再次输入

 public static void main(String[] args) {

        Random rand = new Random();
        int randNum = rand.nextInt(101);
        boolean isSuccess = false;
        System.out.println("我已经随机生成一个了数字,来猜猜这个数字,(^^)");
        int times = 0;
        @SuppressWarnings("resource")
        Scanner sc = new Scanner(System.in);
        while (!isSuccess) {
            times++;
           
            System.out.print("请输入:");
            try {
                int in = sc.nextInt();
                if (in == randNum) {
                    isSuccess = true;
                    System.out.println("恭喜你,答对了,你已经猜了" + times + "次");
                } else {
                    if (in > randNum)
                        System.out.println("大了,你已经猜了" + times + "次,再猜:");
                    else
                        System.out.println("小了,你已经猜了" + times + "次,再猜:");
                }
            } catch (InputMismatchException e) {

                System.out.println("输入错误!");

                continue;

            }
            
            
        }
        

    }

这个问题百度到了,原因是如果不重置Scanner对象sc将会总在while死循环 trycatch,canner对象发生异常后就不能再被使用,所以一直报异常,变成了死循环

改成下面这样:

public static void main(String[] args) {
        Random rand = new Random();
        int randNum = rand.nextInt(101);
        boolean isSuccess = false;
        System.out.println("我已经随机生成一个了数字,来猜猜这个数字,(^^)");
        int times = 0;
        while (!isSuccess) {
            times++;
            @SuppressWarnings("resource")
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入:");
            try {
                int in = sc.nextInt();
                if (in == randNum) {
                    isSuccess = true;
                    System.out.println("恭喜你,答对了,你已经猜了" + times + "次");
                } else {
                    if (in > randNum)
                        System.out.println("大了,你已经猜了" + times + "次,再猜:");
                    else
                        System.out.println("小了,你已经猜了" + times + "次,再猜:");
                }
            } catch (InputMismatchException e) {
                System.out.println("输入错误!");
            }
            
            
        }
        
    }

好问题解决了。

运用C#编程输入用户名后就可以判断输入的用户名是对还是错误 立即下载

相关推荐

ANSYS Maxwell:从RMxprt到3D轴向磁通电机的无缝建模指南

本文详细介绍了如何利用ANSYS RMxprt作为高效起点,快速构建3D轴向磁通电机的有限元分析模型。通过RMxprt内置模板输入关键参数并完成磁路法计算后,可一键生成包含几何、材料、绕组及边界条件的即用型Maxwell 3D模型,极大简化了复杂三维结构的建模流程,使工程师能专注于性能优化与仿真分析。

weixin_29281941的博客 555

Controller 层返回值的公共包装类-避免每次都包装一次返回-InitializingBean增强

场景:在微服务中,一般返回数据都会有个返回码、返回信息和返回消息体,但是每次返回时候调用或者是封装,太过麻烦,有没有什么办法不用每次都封装呢? 答案是有的。 返回值对象 package com.study.auth.comm; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.serializer.Serialize..

hu10131013的博客 10万+

数学建模小白必看:层次分析法(AHP)从入门到实战(附Python代码)

本文详细介绍了层次分析法(AHP)在数学建模竞赛中的应用,从构建判断矩阵到一致性检验,再到权重计算和实战案例。通过Python代码实现,帮助小白快速掌握AHP的核心技巧,解决评价类难题,提升建模效率。

web39explorer的博客 918

解决C#中无限递归导致的System.StackOverflowException异常

1. 无限递归:由于没有终止条件,该方法会不断地调用自身,导致调用栈不断增长。2. 栈溢出:每个方法调用都会在调用栈上占用一定的空间。无限递归最终会消耗完所有可用的栈空间,导致`StackOverflowError`。

weixin_59272777的博客 2777

从零开始搭建GD32F103CBT6开发环境:VSCode配置与实战技巧

本文详细介绍了如何从零开始为国产MCU GD32F103CBT6搭建高效的VSCode开发环境。内容涵盖工具链安装、VSCode核心插件配置、工程目录结构规划、关键配置文件编写以及Makefile实战,旨在帮助开发者摆脱传统IDE束缚,利用现代化工具链提升嵌入式开发效率。

weixin_29158413的博客 448

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 870

c#catch循环内捕获到异常继续循环

一,如果我们将异常而不影响循环,如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace trycatch { class Program {...

dcujcivw769565的博客 1114

四旋翼无人机数学模型推导

本周开始进行四旋翼无人机的学习工作,首先来进行四旋翼无人机的数学模型推导工作。。 四旋翼动力学数学模型 坐标变换 介绍四旋翼数学模型之前,首先引入坐标变换的概念,定义两个坐标系惯性坐标系{E},以及机体坐标系{B},惯性坐标系就相当于在地面建立的、静止不动的坐标系,也是我们操纵无人机所在的空间,而机体坐标系是建立于四旋翼机体之上,随着四旋翼姿态变换而变化,所以建立一种地面上的惯性坐标系与四旋翼机体坐标系之间的转换关系,就有这个必要。 对于惯性坐标系{E},以及机体坐标系{B},它们之间的转换关系

BiuBiuSun的博客 1万+

try catch 循环问题的真相

try catch在编码过程中经常使用,为了捕获可预见的异常,保证程序继续运行。 如果遇到循环处理逻辑,try catch应该放在循环内、还是循环外呢? 我这里记录一下: 通常的一种说法: try catch放在循环内,异常自己捕获处理。其他循环可以继续执行。 放在循环外,循环体就视为一个整体,一旦发生异常,就不执行。 // 放在外部 try { for(int i=1;i&...

继续,Let's Go! 5864

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

Xilinx GTY Transceiver时钟方案与功耗优化实践

本文详细解析了Xilinx GTY Transceiver的时钟方案设计与功耗优化实践,涵盖从基础配置到高速24.33024Gbps和中速10.1376Gbps的实战案例。通过Transceivers Wizard的IP设计技巧和动态功耗优化方法,帮助工程师有效降低FPGA系统功耗,提升高速串行通信的稳定性与效率。

weixin_28736355的博客 228

关于处理try-catch循环一次异常,次次异常的一个例子

学习Java过程中,遇到这么一道题: 从键盘输入一个整数,判断该数值是否大于当前月份。 由于从键盘输入的不一定是整数,我想用一个try-catch语句处理异常,并重新运行输入步骤。代码如下: import java.util.Calendar; import java.util.Scanner; public class TestScanner { public static

fengnzx 2180

SOME/IP协议详解「1.1·面向服务与面向信号」

面向信号和面向服务的区别,和举例子

雪云飞星的博客 5656

【Java】异常处理练习题所遇到的错误

try catch 在一个包含输入的循环里,catch语句块无限循环执行。 一切源于这道题数字格式异常编写一个程序,提示用户读取两个整数,然后显示他们的和。程序应该在输入不正确时提示用户再次输入数字。 java fflush() 清空缓存区

Jackin 的博客 2647

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

try - catch如何return返回值

刚刚做题一直卡在如果输入错误,再重新输入会产生错误的返回值 之前的代码片段 String text = input.nextLine(); int num = -1; try{ num = Integer.parseInt(text); return num; }catch (NumberFormatException e){ menu(); return num; } ============================= 修改后的 public static .

Dylan6868的博客 1727

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Day07_10目标:异常的强大之处

目标:异常的强大之处 作用:可以防止程序遇到异常时而报错结束。 public class Demo { public static void main(String[] args) { while(true){ try{ System.out.println("请输入您的年龄:"); i...

Dream丶Chaser的博客 154

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java inputmismatch_Java使用InputMismatchException尝试/捕获将创建无限循环

因此,我正在构建一个从用户输入中获取整数的程序。我有一个看起来非常简单的try / catch块,如果用户不输入int,则应该重复该块直到他们这样做。这是代码的相关部分:import java.util.InputMismatchException;import java.util.Scanner;public class Except {public static void main(Strin...

weixin_30538955的博客 412

java 无限循环会报错吗_java – 处理无限循环的异常

我的问题简短而甜蜜.我不明白为什么我的程序在捕获错误时无限循环.我做了一个新的try-catch语句,但它循环甚至复制,粘贴和修改了之前有效的程序中的相应变量.以下是声明本身及以下将是整个计划.谢谢您的帮助!try {input = keyboard.nextInt();}catch(Exception e) {System.out.println("Error: invalid input");...

weixin_31244759的博客 207

nextInt()方法在无限循环中,无法停止的问题

解决nextInt()方法在循环录入中,输入错误格式后,继续执行程序的问题

github_34013496的博客 2568

关于Scanner类写在循环外面抛出异常后会无限循环的问题

Scanner sc = new Scanner(system.in); while(true){ try{ a=sc.nextInt(); system.out.println(a); } catch(InputMismatchException e){ system.out.println("输入异常"); } } 如果我输入一个字母a后,它就会进入无限循环,输出"输入异常"。

m304964781的博客 3025

30天学会JAVA—练习题(2021韩顺平)——Day12 异常

try-catch 异常练习 思路 创建Scanner对象 使用无限循环,去接收一个输入 将该输入的值,转成一个Int 如果在转换时,抛出异常,则说明输入的内容不是一个可以转成Int的内容 如果没有抛出异常, 则break该循环 eclipse中try-catch:选中可能有异常的语句,右键–surround with 代码 public class A01 { public static void main(String[] args) { Scanner sc = new Scan

wu6426的博客 235

java try-catch以及循环的问题

今天java基础课上碰到一个比较有意思的try-catch异常的问题,钻研了好久,分享出来大家讨论。 废话不多说,先上一段代码。 [java] view plaincopy public class Demo3 {       public static void main(String[] args) {           int 

epm_kf6_10的博客 1496

关于利用input.hasNextInt()循环输入的Bug分析和可行性提供

关于利用input.hasNextInt()循环输入的Bug分析和可行性提供 今天做作业时遇到一个功能需求:输入的内容为非数字时控制台提示信息并重新输入 本来准备用pattern方法写,但是出于偷懒的心理(少些两句少动点脑子)于是用了从网上找来的hasNextInt()嵌入while()的方法,然后发现……好像自己挖了个坑跳了进去…… int a=0; while (!input.hasNex...

weixin_41355677的博客 2084

while try catch无限循环

Scanner console= new Scanner(System.in); private int CatchInput() { while (true) { try { System.out.println("------输入id------"); return co...

838

java try-catch以及循环的问题

今天java基础课上碰到一个比较有意思的try-catch异常的问题,钻研了好久,分享出来大家讨论。 废话不多说,先上一段代码。 public class Demo3 { public static void main(String[] args) { int a = 0; int b = 0; int c = 0; boolean temp = true; Scanne

ai_houzi的博客 1万+

java语句无限循环语句_Java中的无限循环

请看下面的whileJava 无限循环。它导致其下面的语句的编译时错误。while(true) {System.out.println("inside while");}System.out.println("while terminated"); //Unreachable statement - compiler-error.以下相同的无限while循环可正常工作,并且不会发出任何错误,其中我...

weixin_31077125的博客 2650
上一篇: Eclipse崩溃后无法启动的问题解决
下一篇: jetty修改端口号
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值