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语法的更多相关文章

  1. java基础语法笔记

    这段时间看了一些java,急了一些笔记,记下一遍以后复习用! 2016-07-24 15:12:40 java很多语法都跟C#类似,下面列举一些不同的地方******注意***** java中的系统方 ...

  2. Java基本语法实验报告

      题目:       Java基本语法 课程名称:  JAVA语言程序设计 班    级:    信1705-1 姓    名:   刘雨馨     学号:   20173445 指导教师:    ...

  3. Java 基本语法---Java方法

    Java 基本语法---Java方法 0.概述 方法:就是用来解决一类问题的代码的有序组合,是一个功能模块: 在方法部分,只使用对象名词调用方法: Scanner sc = new Scanner(S ...

  4. Java 基本语法---Java数组

    Java 基本语法---Java数组 0. 概述 数组:相同类型的数据 按照顺序 组成的一种 引用数据类型 . 数据类型:基本数据类型 + 引用数据类型: 引用数据类型:类 + 接口 + 数组 : 一 ...

  5. Java 基本语法---流程控制

    Java 基本语法---流程控制 0. 概述 三大流程控制语句:顺序.选择.循环. 选择结构: if 结构,if - else结构: 多重 if - else 语句 ; 嵌套 if - else 语句 ...

  6. Java 基本语法---Java运算符

    Java 基本语法---Java运算符 0. 概述 Java中的运算符主要分为以下几种: 算术运算符 赋值运算符 关系运算符 逻辑运算符 条件运算符 位运算符 其他运算符 1. 算术运算符 操作符 描 ...

  7. Java-Runoob:Java Scanner 类

    ylbtech-Java-Runoob:Java Scanner 类 1.返回顶部 1. Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Sc ...

  8. java Scanner和异常

    Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scann ...

  9. 第8天 Java基础语法

    第8天 Java基础语法 今日内容介绍 Eclipse开发工具 超市库存管理系统 Eclipse开发工具 Eclipse是功能强大Java集成开发工具.它可以极大地提升我们的开发效率.可以自动编译,检 ...

随机推荐

  1. 热情组——项目冲刺 Day1

    项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件的生成,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 昨日进 ...

  2. win7升级win10

    win7的系统看起来不是特别爽,还是win10用得顺手. win7升级win10: https://jingyan.baidu.com/article/066074d60391e2c3c31cb04e ...

  3. MYSQL插入千万数据的工具类

    建表语句 CREATE TABLE `test_id` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键自增非空', `name` varchar( ...

  4. centos 7 安装python3 & pip3

    1.安装python3 https://www.cnblogs.com/Trees/p/7497482.html 2.解决:python ModuleNotFoundError: No module ...

  5. c++小学期大作业攻略(五)基于QSS的样式美化

    这回真的是最后一篇了. 前面说过,我们开发过程中暂时不搭理样式问题,等最后再一起处理,那么现在就是最后处理时刻了!看到网上说QSS跟CSS差不多,我还觉得自己可以干回老本行了,结果用起来发现,QSS是 ...

  6. 2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比

    原文:2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比 title author date CreateT ...

  7. 实现个虚拟机只要几百行的 toy 版就够了

    关键是 指令 的 eval 并把 高层代码进行翻译. 典型的项目: 1.  java-compiler (C++) 2. 手把手教你构建 C 语言编译器(0)- 前言 | 三点水  (C)

  8. C++中Matrix(矩阵)的基本运算( +、-、=、<<)

    利用二维指针开辟空间形成二维数组: 原题为设计一个Matrix类,实现基本的矩阵运算: 初次设计为HL[10][10]数组,存放矩阵元素,后改为二维指针: 主要问题存在于二维指针理解的不透彻,无法理解 ...

  9. HeadFirst设计模式(一)策略者模式

    最近在看HeadFirst设计模式一书,作为一个半路出家的程序员,感觉很多东西需要学习,学习的路程中有些东西学了当时觉得理解了,但日常工作中没有使用到渐渐的自己就忘记了.--------------- ...

  10. 【转载】C#里怎么把string类型转换成double

    在C#的数字计算过程中,有很多的方法可以将字符串String类型的变量转换为double类型,double.Parse方法.Convert.ToDouble方法.double.TryParse方法等都 ...