用户交互Scanner

Scanner对象

  • 调用java.util.Scanner

  • 可以通过Scanner类来获取用户的输入

  • 基本语法:

    Scanner scanner = new Scanner(System.in);

  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

  1. import java.util.Scanner;
  2. public class Demo01 {
  3. public static void main(String[] args) {
  4. //创建一个扫描器对象,用于接收键盘数据
  5. Scanner scanner = new Scanner(System.in);
  6. System.out.println("使用next方式接收:");
  7. //判断用户有没有输入字符串
  8. if(scanner.hasNext()){
  9. //使用next方式接收
  10. String str = scanner.next();//程序会等待用户输入完毕
  11. System.out.println("输出的内容为:"+str);
  12. }
  13. scanner.close();
  14. }
  15. }

一、next():

  1. 一定要读取到有效字符后才可以结束输入。
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  4. next()不能得到带有空格的字符串

二、nextLine():

  1. 以Enter作为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
  2. 可以获得空白。
  1. import java.util.Scanner;
  2. public class Demo02 {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. System.out.println("使用nextLine方式接收:");
  6. if(scanner.hasNextLine()){
  7. String str = scanner.nextLine();
  8. System.out.println("输出的内容为:"+str);
  9. }
  10. scanner.close();
  11. }
  12. }

三、hasNext()与hasNextLine()

  1. import java.util.Scanner;
  2. public class Demo04 {
  3. public static void main(String[] args) {
  4. //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果;
  5. Scanner scanner = new Scanner(System.in);
  6. //和
  7. double sum = 0;
  8. //计算输入了多少个数字
  9. int m = 0;
  10. System.out.println("请输入数据:");
  11. //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
  12. while(scanner.hasNextDouble()){
  13. double x = scanner.nextDouble();
  14. m=m+1;//m++
  15. sum = sum + x;
  16. System.out.println("你输入了第"+m+"个数据,然后当前结果sum="+sum);
  17. }
  18. System.out.println(m + "个数的和为" + sum);
  19. System.out.println(m + "个数的平均值为" + (sum / m));
  20. scanner.close();
  21. }
  22. }

四、hasNextInt()与hasNextFloat()

  1. import java.util.Scanner;
  2. public class Demo03 {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. //从键盘键入数据
  6. int i = 0;
  7. float f = 0.0f;
  8. System.out.println("请输入整数:");
  9. if(scanner.hasNextInt()){
  10. i = scanner.nextInt();
  11. System.out.println("整数数据:"+ i );
  12. }else{
  13. System.out.println("输入的不是整数数据!");
  14. }
  15. System.out.println("请输入小数:");
  16. if(scanner.hasNextFloat()){
  17. f = scanner.nextFloat();
  18. System.out.println("小数数据:"+ f );
  19. }else{
  20. System.out.println("输入的不是小数数据!");
  21. }
  22. scanner.close();
  23. }
  24. }


Java基础之(七):Scanner对象的更多相关文章

  1. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  2. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  3. Java基础之使用Scanner类获取用户输入

    创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanne ...

  4. Java基础三(Scanner键盘输入、Random随机数、流程控制语句)

    1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于 ...

  5. JAVA基础知识之IO——对象序列化

    对象序列化 Java对象序列化(Serialize)是指将Java对象写入IO流,反序列化(Deserilize)则是从IO流中恢复该Java对象. 对象序列化将程序运行时内存中的对象以字节码的方式保 ...

  6. java基础Synchronized关键字之对象锁

    java中Synchronized关键字之对象锁    当有多个线程对一个共享数据进行操作时,需要注意多线程的安全问题. 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同 ...

  7. Java基础语法<七> 对象与类

    笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个类的对象 ...

  8. Java基础语法<七> 对象与类 封装

    笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 1.1 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个 ...

  9. 构造方法,重载,static,math类(java基础知识七)

    1.构造方法概述和格式 * A:构造方法概述和作用     * 给对象的数据(属性)进行初始化 * B:构造方法格式特点     * a:方法名与类名相同(大小也要与类名一致)     * b:没有返 ...

  10. java基础讲解08-----类和对象

    1.什么是面向对象? 面向对象设计的实质 就是对现实世界的对象进行建模操作. 现实的生活中,随处可见的一种事物就是对象,对象是事物存在的实体,通常我们将会对对象划分为两个部分,静态部分和动态部分.比如 ...

随机推荐

  1. ajax无法返回视图

    $.ajax({ url:"http://localhost:8080/wb/toUpLoad", type:"post", data:formData, pr ...

  2. 有关spring注解总结

    前言 目前企业开发多采用纯注解的方式开发,注解开发的好处:简洁,可读性强 最近学习了spring全家桶,总结了有关spring的常用注解,写的不对的地方,欢迎指正 Spring模块注解 @Config ...

  3. Linux nginx 负载的几种方式

    2021-08-191. 轮询 (这是默认的方式)就是在 nginx 映射的几个服务器按请求的时间顺序逐一分配,几率是随机的.如果后端服务器 down 掉,能自动忽略不用.这种情况一般是每台服务器配置 ...

  4. Android Jetpack基本架构之ViewModel+LiveData+DataBinding入门

    前提:导入所有依赖,开启DataBinding app的build.gradle android { defaultConfig { ... dataBinding { enabled true } ...

  5. Qt学习日记篇-Qt中使用Curl和jsonCpp

    1.Qt中安装并使用jsonCPP库 1.1  官网下载.https://sourceforge.net/projects/jsoncpp/    解压文件得到 jsoncpp-src-0.5.0 文 ...

  6. Kubernetes的安装部署

    前言:简述kubernetes(k8s)集群 k8s集群基本功能组件由master和node组成. master节点上主要有kube-apiserver.kube-scheduler.kube-con ...

  7. MyBatis学习总结(四)——字段名与实体类属性名不相同的冲突的解决

    表中的字段名和表对应实体类的属性名称不一定都是完全相同的,这种情况下的如何解决字段名与实体类属性名不相同的冲突.如下所示: 一.准备演示需要使用的表和数据 CREATE TABLE my_user( ...

  8. stat 命令家族(4)- 详解 iostat

    性能测试必备的 Linux 命令系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1819490.html 介绍 报告 CPU 信息和 I/ ...

  9. redis 主从复制详解

    引言 我们之前操作 Redis 都是单机版,但是实际应用中没人使用单机版,都是搭建集群的方式.这篇文章要介绍的主从复制,是指将一台 Redis 服务器的数据,复制到其他 Redis 服务器,我们将前者 ...

  10. 内核软中断之tasklet机制

    1. 软中断IRQ简介 软中断(SoftIRQ)是内核提供的一种基于中断的延时机制, Linux内核定义的软中断有以下几种: enum { HI_SOFTIRQ=0, /*高优先级的tasklet*/ ...