一、先看一段正常的代码

  1. 一段用Scanner捕获键盘输入的代码:
Scanner sc = new Scanner(System.in);
// 先读取键盘输入的字符串
System.out.println("input name :");
String name = sc.nextLine();
// 后读取键盘输入的int值
System.out.println("input id :");
int id = sc.nextInt();System.out.println("id = " + id + " name =[" + name + "]");
System.out.println("execute finish !");
  1. 测试结果

2.1 运行程序

input name :
lings //键盘输入
input id :
0 //键盘输入

2.2 程序输出
id = 0 name =[lings]
execute finish !
和预期一样。
二、一个小变化,颠倒一下取值类型的顺序

  1. 一段改变了取值顺序的代码:
Scanner sc = new Scanner(System.in);// 先读取键盘输入的int值
System.out.println("input id :");
int id = sc.nextInt();// 后读取键盘输入的字符串
System.out.println("input name :");
String name = sc.nextLine();System.out.println("id = " + id + " name =[" + name + "]");
System.out.println("execute finish !");

咦?说好的阻塞呢?我还没输入字符串怎么就执行结束了???
2. 测试结果

2.1 运行程序

input id :
0 //键盘输入
input name :

2.2 程序输出

id = 0 name =[]
execute finish

咦?说好的阻塞呢?我还没输入字符串怎么就执行结束了???
3. 原因如下:

nextInt方法根据分隔符(回车,空格等)只取出输入的流中分割的第一部分并解析成Int,然后把后面的字节传递下去。
所以,第二种情况键盘实际输入是“0+回车”,nextInt读出了“0”,并留下了“回车”,
接着netxLine读到了一个“回车”,这是字符串的结束判定符啊,所以读到的字符串就是空字符串“”。
  1. 有点晕?继续测试:

4.1 运行程序

input id :
0 lings //键盘输入
input name :
4.2 程序输出

id = 0 name =[ lings] //注意空格
execute finish !

这下清楚了吗?

三、使用注意事项

需要从键盘输入多个参数,尽量把nextLine类型放前面,nextInt放后面,实在不行。

nextInt后面要跟一个nextLine方法“消化”掉那个多余的字符串。

  1. 消化掉多余字符串的例子
Scanner sc = new Scanner(System.in);System.out.println("input id :");
int id = sc.nextInt();
sc.nextLine();
System.out.println("input name :");
String name = sc.nextLine();System.out.println("id = " + id + " name =[" + name + "]");
System.out.println("execute finish !");
  1. 测试结果

2.1 运行程序
input id :
0
input name :
lings

2.2 程序输出

id = 0 name =[lings]
execute finish !

当Scanner.nextInt()遇到了Scanner.nextLine()相关推荐

  1. java scanner输入数组_Java Scanner输入两个数组的方法

    题目 从命令行读入两个数组的长度和数组的值,其中第一行两个数na和nb代表aa和bb数组的长度 代码 import java.util.Scanner; public class Z { public ...

  2. 几句话直观理解java中Scanner类的next()、nextLine()、nextInt()

    很多关于上述几个方法的介绍都非常晦涩,很复杂,我们在处理相关问题时只需要记住以下规律即可: (1)Scanner是一个扫描器,对于键盘输入或者文件中的数据,先存到缓存区等待读取,它判断读取结束的标示是 ...

  3. 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner sc = new Scanner(System.in); 通过 Sca ...

  4. Scanner类的next()和nextLine()

    用户交互 scanner类来获取用户的输入 Scanner类的next()和nextLine() 方法获取输入的字符串,在读取前我们一般使用hasNext()与hasnextLine()判断是否还有输 ...

  5. java中scanner中nextint,Java Scanner nextInt()方法

    Java Scanner nextInt()方法 java.util.Scanner.nextInt() 方法扫描输入的下一个标记为int.形式nextInt()方法的调用和调用nextInt(rad ...

  6. java的nextint种子_java.util.Scanner.nextInt(int radix)方法实例

    全屏 java.util.Scanner.nextInt()方法扫描输入的下一个标记为int.此方法将抛出InputMismatchException,如果如下文所述的下一个标记不能转换为有效的int ...

  7. java scanner类int_Java之 Scanner类

    1. Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,并通过 Scanner 类的 next() 与 nextLin ...

  8. java scanner类 构造器,Java Scanner类

    本文概述 Java的Scanner类可在java.util包中找到. Java提供了多种从键盘读取输入的方法, java.util.Scanner类就是其中之一. Java Scanner类使用默认为 ...

  9. 关于nextInt()、next()和nextLine()的用法

    nextInt(): nextInt()只读取数值,剩下"\n"还没有读取  hasNextInt()用于判断键盘输入的下一个字符串是否为Int类型,返回boolean.  nex ...

最新文章

  1. 怎么将对象里面部分的属性放到一个空的对象里面去
  2. 技术图文:如何解决 DAO 抛出的 80040154 错误?
  3. 图像金字塔操作,上采样、下采样、缩放
  4. 16:00面试,16:08就出来了 ,问的实在是太...
  5. Hibernate的命名查询(NamedQuery)
  6. C语言源代码展示:常用转换函数实现原理
  7. linux shell for 循环变量,shell for循环、循环变量值付给其他shell脚本的方法
  8. 1120 Friend Numbers
  9. js 难点之原型理解
  10. 四、登录注册页功能实现《iVX低代码/无代码个人博客制作》
  11. ARM指令集与Thumb指令集与Thumb-2指令集的区别
  12. Java实现基于Cookie的单点登录看这篇文章就够了
  13. MaskRCNN源码解析1:整体结构概述
  14. 如何刷百度搜索下拉框进行营销引流?
  15. 解决oracle出现the account is locked问题以及出现not logged on
  16. python access violation_Python x64下ctypes动态链接库出现access violation的原因分析
  17. jenkins 怎么配置阿里企业邮箱进行email发送
  18. 一个简单的storyboard示例,其中关于添加navigation的部分可以学习,此前没用过
  19. Virustotal——上传样本保存扫描结果
  20. Echarts的配置与使用

热门文章

  1. App 运行后屏幕顶部和底部各留黑边问题 - iOS
  2. 阅读笔记:黑碳对于冰雪辐射效应的影响
  3. STM32F4与STM32L4,SPI DMA HAL 关闭片选 时机探讨
  4. Java操作redis设置第二天凌晨过期
  5. 在录音等情况下保持屏幕长亮
  6. CodeForces103B - Cthulhu 解题报告
  7. 【解决方法】hexo g 报错 OperationalError: EPERM: operation not permitted, unlink ...
  8. APM应用性能管理工具Pinpoint测评
  9. HID蓝牙遥控器 - 支持键盘、鼠标、影音遥控器(开源)
  10. 计算机vb知识点,计算机高职专业VB知识要点003 VB基础知识,案例:逐行输出