本文转载自 http://bianku.iteye.com/blog/399715
感谢 bianku
今天做java的实训的第3题,其中用到了Scanner;写了下面一段代码:
- Student a=new Student();
- Scanner in = new Scanner(System.in);
- System.out.println("请输入学生的姓名: ");
- a.setName(in.nextLine());
- System.out.println("请输入学生的年龄: ");
- a.setAge(in.nextInt());
- System.out.println("请输入学生所在城市: ");
- a.setCity(in.nextLine());
- System.out.println("请输入学生家所在的小区单元: ");
- a.setAddr(in.nextLine());
- System.out.println("请输入邮政编码: ");
- a.setPostcode(in.nextInt());
- System.out.println("请输入学生的出生日期: ");
- a.setDate(in.nextLine());
- System.out.println("******************************");
- a.showStudent();
貌似没错,也能运行。看下执行的过程发现输入年龄后
“请输入学生所在城市:
请输入学生家所在的小区单元:”一起跳出来了
这样:
- 请输入学生的姓名:
- 张三
- 请输入学生的年龄:
- 21
- 请输入学生所在城市:
- 请输入学生家所在的小区单元:
- 常州
- 请输入邮政编码:
- 222314
- 请输入学生的出生日期:
- ******************************
- 该学生的信息为:
- 姓名:张三
- 年龄:21
- 家庭住址:常州
- 邮政编码:222314
- 出生日期:
晕,为什么呢?再看一下代码,仿佛没错呀?此时想到了C语言里好像也有类似的现象,当用getchar输入两行字符时
中间要加一个getchar();用来接收回车键。这里会不会也是类似的情况呢?没有接受便直接跳到下一行了,看这架势有点像。看一下API:API上的解释
nextLine
public String nextLine()
此扫描器执行当前行,并返回跳过的输入信息。
此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。
分隔符被nextLine()接受了?
于是写了一个验证的代码:
- int n =in.nextInt() ;
- String s1 = in.nextLine();
- String s2 = in.nextLine();
- 输入:
结果应该是什么呢?如果是:
12
I LOVE YOU 那就说明猜想正确了!
运行后发现,果然是这样的,哈哈,和C语言的一样啊
那就仿照着解决下:加一个 in.nextLine();试试:
- Student a=new Student();
- Scanner in = new Scanner(System.in);
- System.out.println("请输入学生的姓名: ");
- a.setName(in.nextLine());
- System.out.println("请输入学生的年龄: ");
- a.setAge(in.nextInt());
- in.nextLine();
- System.out.println("请输入学生所在城市: ");
- a.setCity(in.nextLine());
- System.out.println("请输入学生家所在的小区单元: ");
- a.setAddr(in.nextLine());
- System.out.println("请输入邮政编码: ");
- a.setPostcode(in.nextInt());
- in.nextLine();
- System.out.println("请输入学生的出生日期: ");
- a.setDate(in.nextLine());
- System.out.println("******************************");
- a.showStudent();
运行试试:
- 请输入学生的姓名:
- 张三
- 请输入学生的年龄:
- 21
- 请输入学生所在城市:
- 三里国
- 请输入学生家所在的小区单元:
- 常州市
- 请输入邮政编码:
- 222314
- 请输入学生的出生日期:
- 1989-02-02
- ******************************
- 该学生的信息为:
- 姓名:张三
- 年龄:21
- 家庭住址:三里国常州市
- 邮政编码:222314
- 出生日期:1989-02-02
ok啦!!!
为什么加一个in.nextLine();就好了呢,原因是nextInt()读入的是仅是数字,而换行符没有读入,
使用nextInt()的时候,读取一定是数值型的字符,然后就按换行符 接着使用nextLine(),它是读到行分隔符就结束,而行分隔符前已经没信息,所以没有读到任何可返回的信息。
分享到:
相关推荐
Java中Scanner类的用法,java初学者必看
例如,可以提示用户输入一个字符串或数字,然后程序会等待用户的输入,并使用Scanner的方法(如nextLine()或nextInt())读取用户的输入。 使用Scanner的基本步骤如下: 导包:首先,需要将Scanner类所在的包导入到...
1.鼠标邮件发送要测试的反序列化数据到 Manual testing 2.选择测试方式,进行测试 3.假如测试出来了,鼠标右键发送到 exploiting 模块
Scanner类的用法2007-03-25 14:41Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
java 5.0 加入的scanner类的使用方法,可以简单的输入输出控制,取代原来的输入输出流控制的麻烦事情
java输入语句scanner
IIS,Scanner利用IIS漏洞写shell . IIS,Scanner利用IIS漏洞写shell IIS,Scanner利用IIS漏洞写shell
ASML Scanner 光刻机介绍
java中Scanner类nextLine()和next()的区别和使用方法 java中Scanner类nextLine()和next()的区别和使用方法
就像C++一样在控制台输入数据“cin>>”,我们可以在Java的控制台来输入数据,即对文本的一些操作!
sonar-scanner
sonar-scanner-2.8
Telnet scanner in network
Colasoft MAC Scanner 是一款用于扫描 IP 地址和 MAC 地址的扫描工具。该软件可以根据在一台计算机上的多个 NIC 上配置的 IP 地址自动地侦测到所有的之网并且可以根据你的需要扫描之网上定义的 MAC 地址和 IP 地址。
IISPutScanner1.3原版IISPutScanner1.3原版IISPutScanner1.3原版
Advanced IP scanner 是一款快速网络IP扫描工具。用户只需启动后简单的两步操作:设定要扫描的IP位置范围、启动扫描功能,在极短的时间内这个IP区段中只要有连上网络的电脑均会出现在其的清单中。还提供了远端控制...
rtlsdr scanner code for sldr
Shadow Security Scanner(SSS)是一款来自俄罗斯的老牌专业安全漏洞扫描软件,可以对很大范围内的系统漏洞进行安全、高效、可靠的安全检测,对系统全部扫面之后,SSS可以对收集的信息进行分析,发现系统设置中容易被...
Acunetix Web Vulnerability Scanner,Acunetix Web Vulnerability Scanner,Acunetix Web Vulnerability Scanner