今天做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
LOVE YOU
结果应该是什么呢?如果是:
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(),它是读到行分隔符就结束,而行分隔符前已经没信息,所以没有读到任何可返回的信息。
恍然大悟啊,原来如此。
总结一下:
1、首先遇到问题要勤于思考,不用畏惧
2、可以联想以前的问题,有没有遇过相似的情况可以借鉴的
申明:
1、本文的层次比较低,如果您不小心看了,浪费您时间了请您谅解
2、时间仓促+技术不行,错误在所难免,感谢指出
分享到:
相关推荐
相比于之前的`StringTokenizer`和`Matcher`类,`Scanner`不仅功能更加强大,而且使用起来更加方便灵活。本文将详细介绍`Scanner`类的基本用法以及一些高级技巧。 #### 二、基本概念与构造方法 `Scanner`类位于`java...
Java Deserialization Scanner 提供的功能远不止这些基本用法,它还可以进行更复杂的配置和自动化测试。在GitHub项目的文档中,你可以找到更多关于如何自定义测试设置、配置payload生成器以及与其他Burp Suite功能...
### Scanner类的用法 #### 一、简介与基本用法 `Scanner`类是Java SDK 1.5版本引入的新特性,它提供了一种方便的方式来读取基本数据类型...掌握`Scanner`类的使用方法对于编写交互式程序或处理大量数据非常有帮助。
下面通过两个示例代码进一步了解`Scanner`类的使用方法: ##### 示例一:从控制台读取数据 ```java import java.util.Scanner; public class Example { public static void main(String[] args) { System.out....
#### 二、基本使用方法 1. **创建 Scanner 对象** 创建一个 `Scanner` 对象通常有两种方式: - 从标准输入流 `System.in` 获取输入。 - 从文件中读取数据。 ```java Scanner reader = new Scanner(System.in...
本文将详细介绍 `Scanner` 类的使用方法及其应用场景。 #### 二、`Scanner` 类简介 `Scanner` 类是 Java 中用于读取基本类型和字符串的实用工具类,它位于 `java.util` 包中。`Scanner` 类可以读取来自不同源的...
### Java语法:Scanner类用法详解 #### 一、引言 在Java编程语言中,`Scanner`类是处理输入的核心工具之一。它提供了一系列的方法来读取不同类型的输入数据,如整数、浮点数、字符串等。本文将详细介绍如何使用`...
burp安装Upload Scanner插件
IISPutScanner1.3原版的使用方法一般包括以下步骤: 1. **下载和安装**:从可靠源获取IISPutScanner1.3的原版文件,如提供的"IISPutScanner.exe",并按照安装指南进行安装。 2. **配置扫描参数**:根据目标服务器...
在本篇文章中,我们将深入探讨如何使用`Scanner`来监听键盘输入,并且特别关注`hasNextInt()`方法的使用,以实现对整数的正确读取及非整数输入的过滤。 #### Scanner类简介 `Scanner`类为Java中的输入处理提供了一...
Java 中 Scanner 类 nextLine() 和 next() 的区别和使用方法 Java 中的 Scanner 类提供了多种方法来读取输入数据,其中 nextLine() 和 next() 是两个常用的方法,但它们之间有着重要的区别。 next() 方法 next() ...
【IISPutScanner增强版】是一款专为网络安全专业人士设计的工具,主要用于检测和利用IIS(Internet Information Services)服务器的潜在漏洞。IIS是微软公司提供的一个强大的Web服务器软件,广泛应用于各种网络环境...
7. **易于使用**:Advanced_IP_Scanner界面简洁,操作直观,即便是对网络管理不熟悉的用户也能轻松上手。 **文件信息**: 压缩包中的文件"Advanced_IP_Scanner_2.5.3646.exe"是Advanced-IP-Scanner的安装程序,...
Java编程实现向文本文件中读取数据之Scanner用法示例主要介绍了Java编程实现向文本文件中读取数据之Scanner用法,结合实例形式分析了java使用Scanner类读取文本文件相关操作技巧与注意事项。 一、Scanner类概述 ...
Java 基础之 Scanner 键盘录入 Java 中的 Scanner 键盘录入是 Java 前期学习中非常...使用 Scanner 需要导入包,创建 Scanner 对象,并使用其提供的方法来读取用户的输入。最后,需要关闭 Scanner,以释放系统资源。
标题"IISPutScanner+IISWrite"涉及到的是两个在网络安全领域中常见的工具,主要用于渗透测试。IISPutScanner和IISWrite是针对Microsoft ...在实际操作中,应该结合其他安全工具和方法,进行全面的系统安全评估。
ASML.Scanner 光刻机介绍 ASML.Scanner 光刻机是半导体制造行业中的关键设备, Plays a crucial role in the semiconductor manufacturing industry。下面是该设备的知识点总结: 一、Course Introduction * ...
以下是一些关于`Scanner`类的基本用法: 1. **创建Scanner对象**: 创建`Scanner`对象通常与`System.in`关联,以从控制台获取用户输入。例如: ```java import java.util.Scanner; public class Main { ...
Scanner 类的使用方法非常灵活,可以根据需要选择不同的方法来读取输入数据。例如,可以使用 hasNextXXX() 方法来判断是否有下一个输入数据,然后使用 nextXXX() 方法来读取该数据。例如,hasNextDouble() 方法可以...