Java Scanner语法
1.导入:
import java.util.Scanner;
2.创建对象
Scanner scan = new Scanner(System.in);//一般变量名为scan或者in
最后关闭,scan.close();和I/O流有关,暂不清楚,照抄先。
3.next()
读取字符串,要读取到有效字符后才结束输入,不能读取空格,即遇到空格就停。
Scanner scan = new Scanner(System.in);
String s1 = new String();
String s2 = new String();
String s3 = new String();
s1 = scan.next();
s2 = scan.next();
s3 = scan.next();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
if(scan.hasNext())
System.out.println("Yes");
输入:123 456 789 1011
输出:
123
456
789
Yes
s1第一次读取到有效字符1,遇到4前的空格结束第一次输入;随后s2遇到第一个有效字符4,遇到空格结束;s3遇到第一个有效字符7,同理遇到空格结束,此时还有未读取的字符在缓冲区里,用hasNext()判断;
4.hasNext()
判断是否还有输入的数据,不能识别空格或回车,还会吃掉空格或者回车,连续的空格加回车一次性全部吸收掉,ACM里用循环读取下一组数据。
5.nextLine()
和next()类似,唯一不同就是,next()遇到空格或者回车就断了,nextLine()遇到回车才断,空格也算是有效字符,从第一个有效字符开始直到回车,中间无论多少空格都能吃下。
package my_acm; import java.util.Scanner;
public class MyTest10 { public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s1 = new String();
String s2 = new String();
String s3 = new String();
String s4 = new String();
s1 = scan.next();
s2 = scan.next();
s3 = scan.next();
s4 = scan.nextLine();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4); if(scan.hasNext())
System.out.println("Yes1");
if(scan.hasNextLine())
System.out.println("Yes2"); }
}
/**输入:123 456 789 1011 12 13 14 15
输出:
123
456
789
1011 12 13 14 15
s4把9后面的全部字符全部都吃下去了,没有未读取的字符
*/
nextLine()
6.hasNextLine()
可以判断空格和回车,但是不会吃掉任何字符。
import java.util.Scanner;
public class MyTest10 { public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s1 = new String();
String s2 = new String();
String s3 = new String();
String s4 = new String();
s1 = scan.next();
s2 = scan.next();
s3 = scan.next();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
if(scan.hasNext())
System.out.println("Yes1");
if(scan.hasNextLine())
System.out.println("Yes2");
scan.close();
}
}
测试hasNext()会吃掉空格,hasNextLine()不会


import java.util.Scanner;
public class MyTest10 { public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s1 = new String();
String s2 = new String();
String s3 = new String();
String s4 = new String();
s1 = scan.next();
s2 = scan.next();
s3 = scan.next();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
if(scan.hasNextLine())
System.out.println("Yes2");
if(scan.hasNextLine())
System.out.println("Yes3");
if(scan.hasNext())
System.out.println("Yes1");
scan.close();
}
}
测试hasNext()会吃掉空格,hasNextLine()不会


- 通过比较可以知道hasNextLine()可以判断空格和回车,并且不会吸收字符;
- 但是如果先遇到hasNext(),空格加回车全都被吃掉,后续接上hasNextLine()判断不到还有空格和回车。
7.其他类型的输入
nextDouble();
nextLong();
nextInt();
nextFloat();
nextByte();
Java Scanner语法的更多相关文章
- java基础语法笔记
这段时间看了一些java,急了一些笔记,记下一遍以后复习用! 2016-07-24 15:12:40 java很多语法都跟C#类似,下面列举一些不同的地方******注意***** java中的系统方 ...
- Java基本语法实验报告
题目: Java基本语法 课程名称: JAVA语言程序设计 班 级: 信1705-1 姓 名: 刘雨馨 学号: 20173445 指导教师: ...
- Java 基本语法---Java方法
Java 基本语法---Java方法 0.概述 方法:就是用来解决一类问题的代码的有序组合,是一个功能模块: 在方法部分,只使用对象名词调用方法: Scanner sc = new Scanner(S ...
- Java 基本语法---Java数组
Java 基本语法---Java数组 0. 概述 数组:相同类型的数据 按照顺序 组成的一种 引用数据类型 . 数据类型:基本数据类型 + 引用数据类型: 引用数据类型:类 + 接口 + 数组 : 一 ...
- Java 基本语法---流程控制
Java 基本语法---流程控制 0. 概述 三大流程控制语句:顺序.选择.循环. 选择结构: if 结构,if - else结构: 多重 if - else 语句 ; 嵌套 if - else 语句 ...
- Java 基本语法---Java运算符
Java 基本语法---Java运算符 0. 概述 Java中的运算符主要分为以下几种: 算术运算符 赋值运算符 关系运算符 逻辑运算符 条件运算符 位运算符 其他运算符 1. 算术运算符 操作符 描 ...
- Java-Runoob:Java Scanner 类
ylbtech-Java-Runoob:Java Scanner 类 1.返回顶部 1. Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Sc ...
- java Scanner和异常
Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scann ...
- 第8天 Java基础语法
第8天 Java基础语法 今日内容介绍 Eclipse开发工具 超市库存管理系统 Eclipse开发工具 Eclipse是功能强大Java集成开发工具.它可以极大地提升我们的开发效率.可以自动编译,检 ...
随机推荐
- alicebot
一. 为什么Alice不支持中文因为Alice的question都会被bitoflife.chatterbean.text.Transformations类中的fit函数过滤,而过滤的表达式就是: ...
- ROS融合IMU笔记
ROS官网有一个叫robot_pose_ekf的包,是专门处理传感器融合的包,具体介绍:http://wiki.ros.org/robot_pose_ekf 其中主要功能是订阅主题包括odom(里程计 ...
- vue + element 文件上传 并将文件转 base64
当时有一个需求 是需要用到上传文件这个功能,并且需要将文件转为 base64 给到后台.网上找的全是啥图片转base64 肯定是因为这类需求比较常见.当时有点懵了.后面一想,都他娘是文件啊.然后就找到 ...
- 利用SQL计算两个地理坐标(经纬度)之间的地表距离
两个地理坐标(经纬度)地表距离计算公式: 公式解释如下: Long1,Lat1表示A点经纬度,Long2,Lat2表示B点经纬度: a=Lat1–Lat2 为两点纬度之差,b=Long1-Long2为 ...
- centos7.x下环境搭建(二)—nginx安装
上篇文章是对mysql的安装,接着上篇文章,这篇文章安装nginx服务 添加yum源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址.因此可以如下执行命令添 ...
- Pandas操作excel
读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_co ...
- 【题解】邻值查找 [CH1301]
[题解]邻值查找 [CH1301] 传送门:邻值查找 \([CH1301]\) \([AcWing136]\) [题目描述] 给定一个长度为 \(n\) 的序列 \(A\),\(A\) 中的数各不相同 ...
- K8S的DNS服务
k8s集群部署完后第一件事就是要配置DNS服务,目前可选的方案有skydns, kube-dns, coredns kube-dns是k8s中的一个内置插件,目前作为一个独立的开源项目维护,见http ...
- Linq 将两个查询结果合称为一个
var handsonitems = from a in db.DltQuestionHandson join c in db.DltBdChapter on new { a.ChapterCode ...
- C# - Winform - DevExpress - GridControl 任意条件控制Row背景色。
private void gvSendConfirm_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCusto ...