千家信息网

怎么解决Java while(scanner.hasNext())无法跳出问题

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"怎么解决Java while(scanner.hasNext())无法跳出问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决Ja
千家信息网最后更新 2026年10月31日怎么解决Java while(scanner.hasNext())无法跳出问题

本篇内容主要讲解"怎么解决Java while(scanner.hasNext())无法跳出问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决Java while(scanner.hasNext())无法跳出问题"吧!

    Java while(scanner.hasNext())无法跳出

    情况说明:

    该问题是在做PAT乙级1010时遇到的,我需要在键盘读入有限个数,然后两两进行计算。我一开始想的是声明一个数组,将所有读入的数字进行保存,再分别计算,但是我发现他并不会跳出我设的循环,而是一直在执行

      

    当读入最后一个数据的时候,并不是跳出,而是阻塞在了while中,一直执行  

      

    原因:

    hasNext(),是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。

    解决方案:

    此时,可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个输入与从终止符相匹配,则返回 true。扫描器不执行任何输入。

    //例:以"0"作为终止符Scanner in = new Scanner(System.in);while (!in.hasNext("0")) {System.out.println(in.next());}

    但是这种操作并不能满足我对于题目解答的要求。我运行了网上java写的答案,发现也是一样的问题,只不过可以在while中进行计算。在卡死前将所有结果输出。

    还有一种解决办法就是将输入一字符串的形式读入,然后进行拆解并转成int型数据进行计算。

    java 的while+hasNext()

     /**    @方法1:遇到特殊符号结束     */    public static void main(String args[]){        // System.in代表标准输入,就是键盘输入        Scanner sc = new Scanner(System.in);        // 增加下面一行将只把回车作为分隔符       // sc.useDelimiter("\n");//useDelimiter 可以将分隔符号修改为"回车",或者其他字符。        System.out.println("Please input a number");        // 判断是否还有下一个输入项        while(!sc.hasNext("0"))//遇到0结束        ///此情况可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):            // 如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。        {            // 输出输入项            System.out.println("键盘输入的内容是:" + sc.next());            System.out.println("Please input a number");        }        System.out.println("不执行了");    }

     /**    @方法2以输入"quit",结束输出     */    public static void main(String[] args){        System.out.print("请输入值:");        Scanner s = new Scanner(System.in);        while(s.hasNext()){            String a = s.next();  //将s.next()赋值给变量a            if("quit".equals(a)){                break;            }else{                System.out.println(a);            }        }    }

    到此,相信大家对"怎么解决Java while(scanner.hasNext())无法跳出问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    输入 问题 方法 扫描器 内容 字符 键盘 输出 字符串 就是 数据 标记 符号 而是 学习 循环 阻塞 实用 更深 特殊 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 嘟嘟瓜互联网科技 凡科互联网科技 苏州大垚互联网科技 甘肃拓世互联网科技有限公司 互联网科技创新企业排名 互联网科技公司需要的职位 小米互联网科技园设置 栖莱科技互联网股份有限公司 全球顶尖互联网科技公司 湖北码尼互联网科技有限公司电话 互联网科技公司实习生 互联网科技商业 佛山市翊博互联网络科技有限公司 科技互联网海报 上海科技产业互联网平台 锡山区互联网智能科技产品供应 山东星卡互联网科技有限公司官网 10位科技互联网大佬 重庆科技产业互联网有哪些 网互联网络科技 湖北九亚互联网络科技有限公司 广州为想互联网科技有限公司 广州淘业互联网络科技 互联网 科技馆 互联网科技公司的市场部门 互联网还是高科技吗 阿大互联网科技有限公司 小米互联网科技园入驻 西安有哪些互联网高科技企业 悟空问答互联网科技
    0