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集成开发工具.它可以极大地提升我们的开发效率.可以自动编译,检 ...
随机推荐
- ssm架构数据库连接字符串配置到外部报错
报错: Could not load driverClass ${jdbc.driver} 解决办法: 将 <bean class="org.mybatis.spring.mapper ...
- Java 中 override 和 overload 区别
问题出现: 即使对于一个经验丰富的开发人员来说,方法重载和方法覆盖的区别都能让他犹豫一下, 对于新手来说,经常容易弄混淆. 有没有比较深入浅出的理解方式,能让人过目不忘,用起来还能有条件反射般的速度呢 ...
- (十)golang--运算符
1.算术运算符 + - * / % ++ -- 使用细节:(1)对于"/"号,整数除和小数除的区别: (2)++和--只能独立使用,即a=a++是不允许的:没有++a和--a:i ...
- 机器学习之Artificial Neural Networks
人类通过模仿自然界中的生物,已经发明了很多东西,比如飞机,就是模仿鸟翼,但最终,这些东西会和原来的东西有些许差异,artificial neural networks (ANNs)就是模仿动物大脑的神 ...
- 对于 FFmpeg.NET 开源项目,我的更改
项目地址:https://github.com/cmxl/FFmpeg.NET 官方介绍 .NET wrapper for common ffmpeg tasks FFmpeg.NET provide ...
- python利用ThreadPoolExecutor实现有任务异常,就终止线程池中的所有剩余任务
先描述一下场景: 我有一批任务需要放入线程池中去处理,但是一旦线程池中有1个任务出现了异常(抛了Exception)就将线程中尚未开始的任务全部取消不执行. 需要说明的是正在执行的任务因为无法撤销,所 ...
- struts2拦截器的实现机制
前言 最近老大让每周写一篇技术性的博客,想想也没啥写,就想着随便拿个以前的项目去研究研究五大框架的底层代码.本人水平有限,有不对的地方还望大家勿喷,指正! 开始之前先了解下strtus2的工作流程: ...
- 华为方舟编译器 下载 和 LiteOS Studio Setup 2019-04-16.exe SDK下载
华为方舟编译器是首个取代Android虚拟机模式的静态编译器,可供开发者在开发环境中一次性将高级语言编译为机器码.此外,方舟编译器未来将支持多语言统一编译,可大幅提高开发效率. 编译器下载 [Ark] ...
- 了解MySQL
目前流行的数据库 MySQL Oracle Microsoft SQLServer Microsoft Access PostgreSQL DB2/UDB InfoMax MySQL介绍 世界上最流行 ...
- ztree实现复选框单选功能
/** * ztree的默认配置项 * */ var setting = { view: { selectedMulti: false //按住ctrl是否可以多选 }, check: { enabl ...