今天在学习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);

}

}

java nextline next_java中的nextLine函数相关推荐

  1. java scan.next_Java使用scanner.nextLine()

    尝试使用java.util.Scanner中的nextLine()方法时遇到麻烦. 这是我尝试过的: import java.util.Scanner; class TestRevised { pub ...

  2. java poi 导出中利用sum函数实现合计功能

    java poi 导出中利用sum函数实现合计功能 之前也写过导出功能但是没有写过合计.所以记录下来当做笔记. for(int i = 0; i < arrSize; i++) {JSONObj ...

  3. java的nextline_java中的nextline()

    今天在java上机课时遇到了个小问题,使用Scanner输入数据时,使用了一次nextInt(),一次nextLine(),却只接收了一个整数.代码如下 code1: 1 package cn.dx; ...

  4. java去掉字符串中前后空格函数_JAVA中去掉字符串空格各种方法详解

    1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 代码如下 复制代码 ...

  5. java去掉字符串中前后空格函数_Java去除字符串中的空格

    1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 String str ...

  6. Java实现Excel中的NORMSDIST函数和NORMSINV函数

    <dependency><groupId>org.apache.commons</groupId><artifactId>commons-math3&l ...

  7. java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍

    java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...

  8. java中使用nextLine(); 没有输入就自动跳过的问题?

    [问题分析] 必要的知识:in.nextLine();不能放在in.nextInt();代码段后面 否则in.nextLine();会读入"\n"字符,但"\n" ...

  9. nextline函数_Java中的nextline()函数与next()问题

    [写在前面] import Java.util.*; Scanner in = new Scanner(http://System.in); [出现的问题] 在循环中相连的nextLine();会出现 ...

最新文章

  1. Asp.net MVC 3实例学习之ExtShop(五)——产品详细页
  2. Heartrate:一个牛逼的工具,Python执行实时可视化
  3. 2012 12 12 (109)闪回操作
  4. 沉浸式5G实景、AI+AR体验、机器人互动|5G+数智化展馆广州开幕
  5. Delphi获取显卡和系统各种音频设备的代码实现
  6. leetcode 700. 二叉搜索树中的搜索 思考分析
  7. WuJiuVideoX视频小说图片站群程序开源源码
  8. pip导包CalledProcessError: Command ‘(‘lsb_release‘, ‘-a‘)‘异常处理
  9. @sql 单元测试_10个最常见SQL单元测试错误
  10. windows优化大师怎么用_软件不能用又卸载不掉怎么办——用Windows自家的卸载工具吧(dos级卸载)...
  11. widow下svn上传项目时的文件可执行权限问题
  12. exxi6.7如何传文件到win7_win7系统被删除文件如何恢复 恢复被删除的文件操作方法【详解】...
  13. 区块链安全:基于区块链网络攻击的方式原理详解
  14. VJ—蟠桃记(C语言)
  15. iTEXT常用属性设置
  16. WiFi探针的原理与安全
  17. java对pdf分割_PDFBox分割PDF文档
  18. eye-in-hand手眼标定系统
  19. 一些关于芯片烧录的心得
  20. 创建第一个适用于Android的自定义Gradle插件-第2部分:在构建时生成资源

热门文章

  1. oracle本机安装,序列自增,自增序列跳号问题
  2. 碰撞的火花,速算方法分享
  3. 最全Linux系统学习笔记--持续更新
  4. 面对疫情,我们正在行动!
  5. 蓝桥杯历届-穿越雷区
  6. mysql查看数据库创建语句_sql语句1数据库创建、查看
  7. Python脚本编写的学习
  8. 数控CNC加工中心采用滚珠导轨和滚柱导轨?有哪些区别?
  9. 中国电子学会2022年09月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)
  10. matlab 任务分配粒子群算法