1.导入:

import java.util.Scanner;

2.创建对象

Scanner scan = new Scanner(System.in);//一般变量名为scan或者in

最后关闭,scan.close();和I/O流有关,暂不清楚,照抄先。

3.next()

读取字符串,要读取到有效字符后才结束输入,不能读取空格,即遇到空格就停。

  1. Scanner scan = new Scanner(System.in);
  2. String s1 = new String();
  3. String s2 = new String();
  4. String s3 = new String();
  5. s1 = scan.next();
  6. s2 = scan.next();
  7. s3 = scan.next();
  8. System.out.println(s1);
  9. System.out.println(s2);
  10. System.out.println(s3);
  11. if(scan.hasNext())
  12. 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()遇到回车才断,空格也算是有效字符,从第一个有效字符开始直到回车,中间无论多少空格都能吃下。

  1. package my_acm;
  2.  
  3. import java.util.Scanner;
  4. public class MyTest10 {
  5.  
  6. public static void main(String[] args) {
  7. Scanner scan = new Scanner(System.in);
  8. String s1 = new String();
  9. String s2 = new String();
  10. String s3 = new String();
  11. String s4 = new String();
  12. s1 = scan.next();
  13. s2 = scan.next();
  14. s3 = scan.next();
  15. s4 = scan.nextLine();
  16. System.out.println(s1);
  17. System.out.println(s2);
  18. System.out.println(s3);
  19. System.out.println(s4);
  20.  
  21. if(scan.hasNext())
  22. System.out.println("Yes1");
  23. if(scan.hasNextLine())
  24. System.out.println("Yes2");
  25.  
  26. }
  27. }
  28. /**输入:123 456 789 1011 12 13 14 15
  29. 输出:
  30. 123
  31. 456
  32. 789
  33. 1011 12 13 14 15
  34. s4把9后面的全部字符全部都吃下去了,没有未读取的字符
  35. */

nextLine()

6.hasNextLine()

可以判断空格和回车,但是不会吃掉任何字符。

  1. import java.util.Scanner;
  2. public class MyTest10 {
  3.  
  4. public static void main(String[] args) {
  5. Scanner scan = new Scanner(System.in);
  6. String s1 = new String();
  7. String s2 = new String();
  8. String s3 = new String();
  9. String s4 = new String();
  10. s1 = scan.next();
  11. s2 = scan.next();
  12. s3 = scan.next();
  13. System.out.println(s1);
  14. System.out.println(s2);
  15. System.out.println(s3);
  16. if(scan.hasNext())
  17. System.out.println("Yes1");
  18. if(scan.hasNextLine())
  19. System.out.println("Yes2");
  20. scan.close();
  21. }
  22. }

测试hasNext()会吃掉空格,hasNextLine()不会

  1. import java.util.Scanner;
  2. public class MyTest10 {
  3.  
  4. public static void main(String[] args) {
  5. Scanner scan = new Scanner(System.in);
  6. String s1 = new String();
  7. String s2 = new String();
  8. String s3 = new String();
  9. String s4 = new String();
  10. s1 = scan.next();
  11. s2 = scan.next();
  12. s3 = scan.next();
  13. System.out.println(s1);
  14. System.out.println(s2);
  15. System.out.println(s3);
  16. if(scan.hasNextLine())
  17. System.out.println("Yes2");
  18. if(scan.hasNextLine())
  19. System.out.println("Yes3");
  20. if(scan.hasNext())
  21. System.out.println("Yes1");
  22. scan.close();
  23. }
  24. }

测试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. ssm架构数据库连接字符串配置到外部报错

    报错: Could not load driverClass ${jdbc.driver} 解决办法: 将 <bean class="org.mybatis.spring.mapper ...

  2. Java 中 override 和 overload 区别

    问题出现: 即使对于一个经验丰富的开发人员来说,方法重载和方法覆盖的区别都能让他犹豫一下, 对于新手来说,经常容易弄混淆. 有没有比较深入浅出的理解方式,能让人过目不忘,用起来还能有条件反射般的速度呢 ...

  3. (十)golang--运算符

    1.算术运算符 + -  * / % ++ -- 使用细节:(1)对于"/"号,整数除和小数除的区别: (2)++和--只能独立使用,即a=a++是不允许的:没有++a和--a:i ...

  4. 机器学习之Artificial Neural Networks

    人类通过模仿自然界中的生物,已经发明了很多东西,比如飞机,就是模仿鸟翼,但最终,这些东西会和原来的东西有些许差异,artificial neural networks (ANNs)就是模仿动物大脑的神 ...

  5. 对于 FFmpeg.NET 开源项目,我的更改

    项目地址:https://github.com/cmxl/FFmpeg.NET 官方介绍 .NET wrapper for common ffmpeg tasks FFmpeg.NET provide ...

  6. python利用ThreadPoolExecutor实现有任务异常,就终止线程池中的所有剩余任务

    先描述一下场景: 我有一批任务需要放入线程池中去处理,但是一旦线程池中有1个任务出现了异常(抛了Exception)就将线程中尚未开始的任务全部取消不执行. 需要说明的是正在执行的任务因为无法撤销,所 ...

  7. struts2拦截器的实现机制

    前言 最近老大让每周写一篇技术性的博客,想想也没啥写,就想着随便拿个以前的项目去研究研究五大框架的底层代码.本人水平有限,有不对的地方还望大家勿喷,指正! 开始之前先了解下strtus2的工作流程: ...

  8. 华为方舟编译器 下载 和 LiteOS Studio Setup 2019-04-16.exe SDK下载

    华为方舟编译器是首个取代Android虚拟机模式的静态编译器,可供开发者在开发环境中一次性将高级语言编译为机器码.此外,方舟编译器未来将支持多语言统一编译,可大幅提高开发效率. 编译器下载 [Ark] ...

  9. 了解MySQL

    目前流行的数据库 MySQL Oracle Microsoft SQLServer Microsoft Access PostgreSQL DB2/UDB InfoMax MySQL介绍 世界上最流行 ...

  10. ztree实现复选框单选功能

    /** * ztree的默认配置项 * */ var setting = { view: { selectedMulti: false //按住ctrl是否可以多选 }, check: { enabl ...