java nextline next_java中的nextLine函数

java nextline next_java中的nextLine函数今天在学习java异常处理的时候,下面这段程序中的nextLine()的用法怎么也看不明白。初学者看到这段代码会误以为程序中的input.nextLine()这句是多余的。其实,不使用这句的话,如果输入不是整数,程序会陷入死循环。当你不加input.nextLine()时,你输入小数,try块中给input.nextInt()就无法执行,因为小数无法被读取,我猜是小数一直留在键盘缓冲区。这时con…

大家好,又见面了,我是你们的朋友全栈君。

今天在学习java异常处理的时候,下面这段程序中的nextLine()的用法怎么也看不明白。初学者看到这段代码会误以为程序中的input.nextLine()这句是多余的。其实,不使用这句的话,如果输入不是整数,程序会陷入死循环。

当你不加input.nextLine()时,你输入小数,try块中给input.nextInt()就无法执行,因为小数无法被读取,我猜是小数一直留在键盘缓冲区。这时continueInput = false没有执行,程序直接跳到catch块中,执行了输出语句之后,开始循环的下一次执行。第二次循环时,因为上次输入的小数依然在键盘缓冲区内,input.nextInt()直接从键盘缓冲区得到整数失败,你连输入的机会都没有了,直接跳到catch,后面的执行就与第一次一样。如此,程序就陷入了死循环。

如果你加入input.nextLine(),缓冲区的小数就能被读取走,下次就能正常键盘输入了,就不会出现死循环的问题了。

import java.util.InputMismatchException;

import java.util.Scanner;

public class nextLineDemo {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

boolean continueInput = true;

do {

try {

System.out.print(“enter an integer”);

int number = input.nextInt();

System.out.println(“the number entered is” + number);

continueInput = false;

} catch (InputMismatchException e) {

System.out.println(“try again, incorrect input”);

input.nextLine();

}

}while(continueInput);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138770.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • python 保留两位小数

    python 保留两位小数>>>a=1>>>b=3>>>print(a/b)0>>>#方法一:…print(round(a

    2022年7月5日
  • (2021 最新版)IntelliJ IDEA 下载安装及配置教程

    (2021 最新版)IntelliJ IDEA 下载安装及配置教程前言因为自己电脑最近实在是太卡了,也一直提示更新,索性就直接重装了个系统。因为需要重装下IDEA,而现在新版本的IDEA和之前的版本还是有很大变化的,所以在这里写一篇博客做个记录,方便自己后续配置,也顺便分享给大家。准备工作既然要安装IDEA,那么首先需要前往JetBrains的官网下载最新版的IDEA,下载地址如下:https://www.jetbrains.com/idea/download/这里最新的版本是2021.1.2,而因为我有旗舰版的账号,所以这里就以旗舰版安装

    2022年5月20日
  • 数独高级技巧_数独高阶技巧

    数独高级技巧_数独高阶技巧链(Chain)是数独高阶技巧的核心,所有数独盘势都可以通过各种或简单或复杂的链来解出答案。链的本质是命题之间的关系,在解数独时,每个填数的步骤都可表现为在『A格中填入1』、『B格中填入2』这样非真即

    2022年8月4日
  • BaseDao[通俗易懂]

    BaseDao[通俗易懂]BaseDao

    2022年4月24日
  • ubuntu OpenGrok的搭建

    ubuntu OpenGrok的搭建下载apache-tomcat-8.5.37和opengrok-0.12.1.5,解压。(这两个版本可以使用jdk1.7)安装sudoapt-getinstallexuberant-ctags添加环境变量#tomcat目录exportOPENGROK_TOMCAT_BASE=~/openGrok/apache-tomcat-8.5.37#修改目录,不用/var…

    2022年6月7日
  • Linux CentOS 7安装Oracle11g超完美教程[通俗易懂]

    Linux CentOS 7安装Oracle11g超完美教程[通俗易懂]Oracle部署文章目录Oracle部署1基本环境介绍2检测是否安装了Oracle3卸载Oracle3.1重新做一次虚拟机3.2卸载Oracle4安装准备4.1建立oracle用户和用户组4.2为Oracle的安装创建相关目录4.3优化OS内核参数4.4限制oracle用户的shell权限4.5为Oracle用户添加Oracle环境变量4.6配置hostname(本机IP映射)4.7安装VNC&Oracle相关依赖4.7.1配置yum源4.7.2安装依赖4.7.3检

    2022年7月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号