博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scanner类nextInt方法的使用注意点
阅读量:6981 次
发布时间:2019-06-27

本文共 1678 字,大约阅读时间需要 5 分钟。

一、先看一段正常的代码

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 !");

2. 测试结果

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读到了一个“回车”,这是字符串的结束判定符啊,所以读到的字符串就是空字符串“”。

4. 有点晕?继续测试:

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 !");

2. 测试结果

2.1 运行程序

input id :
0
input name :
lings

2.2 程序输出

id = 0 name =[lings]execute finish !

 

转载于:https://www.cnblogs.com/yoyotl/p/7457711.html

你可能感兴趣的文章
Unix数据中心主宠儿
查看>>
有点小高兴
查看>>
glibc方式安装mysql
查看>>
linux svn使用方法
查看>>
linux入门(三)常见Linux指令及其用法
查看>>
php-fpm慢执行日志
查看>>
一个free异常引发的异常
查看>>
Web应用配置虚拟主机(www.baidu.com)
查看>>
Course
查看>>
[UML]UML系列——包图Package
查看>>
TYVJ 矩阵取数 Label:高精度+dp
查看>>
Google Code Jam 2014 Round 1 A:Problem C. Proper Shuffle
查看>>
YYHS-魏传之长坂逆袭(梦回三国系列T1)
查看>>
jquery 获取Select option 选择的Text和Value
查看>>
后海日记(8)
查看>>
百度云满速下载(转)
查看>>
HTML5学习之二:HTML5中的表单2
查看>>
CSS盒模型及边距问题
查看>>
UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索
查看>>
AlexNet 网络详解及Tensorflow实现源码
查看>>