Java学习 (10)Java流程控制篇(01)Scanner

Java学习 (10)Java流程控制篇(01)Scanner

Scanner对象

Scanner对象基本内容

  • Java提供了Scanner工具类,我们可以通过Scanner类来获取用户的输入
  • java.util.Scanner是 Java5 的新特征
  • *基本语法
Scanner s = new Scanner(System.in);
  • *通过Scanner类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据

关于next() 和 nextLine() 方式的区别

next()

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

    //创建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);

    System.out.println("使用next方式接收:");

    //判断用户有没有输入字符串
    if (scanner.hasNext()){
        //使用next方式接收
        String str = scanner.next();
        System.out.println("输出的内容为:"+str);
    }
    //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关闭
    scanner.close();
}

/*run:
    使用next方式接收:
    hello world!
    输出的内容为:hello
*/

nextLine()

  1. 以 Enter 为结束符,也可以说是 nextLine() 方法返回的是输入回车之前的所有字符
  2. 可以获取空白

常使用

public static void main(String[] args) {
    //创建扫描器
    Scanner scanner = new Scanner(System.in);

    System.out.println("使用nextLine方式接收:");
    //使用nextLine接收
    String str = scanner.nextLine();
    System.out.println("输出的内容为:"+str);

    scanner.close();
}
/*run:
    使用nextLine方式接收:
    hello world!
    输出的内容为:hello world!

*/

Scanner进阶内容(实例)(建议学三大语句后学习此内容)

1.判断数据类型

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    //从键盘接收数据
    int i = 0;
    float f = 0.0f;

    System.out.println("请输入整数:");

    //如果。。。=那么
    if (scanner.hasNextInt()){//这是种定义方法
        i = scanner.nextInt();
        System.out.println("整数数据:"+ i);
    }else {
        System.out.println("输入的不是整数数据:"+ i);
    }

    System.out.println("请输入小数:");

    //如果。。。=那么
    if (scanner.hasNextFloat()){
        f = scanner.nextFloat();
        System.out.println("小数数据:"+ f);
    }else {
        System.out.println("输入的不是小数数据:"+ f);
    }

    scanner.close();
}
/*run:
    请输入整数:
    10
    整数数据:10
    请输入小数:
    1.1
    小数数据:1.1
*/(1)

/*run:
    请输入整数:
    1.1
    输入的不是整数数据:0
    请输入小数:
    小数数据:1.1
*/(2)

2.计算数据总和与平均数

public static void main(String[] args) {
    //输入多个数据,并求数据总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并求出其执行结果
    Scanner scanner = new Scanner(System.in);

    //定义和
    double sum = 0;
    //计算输入数字总和
    int m = 0;
    System.out.println("请输入数字:");
    //通过循环判断是否还有输入,并在面对每一次进行求和和统计
    while (scanner.hasNextDouble()){
        double v = scanner.nextDouble();
        m++;
        sum += v;
        System.out.println("你输入了第" +m+ "个数据,当前结果sum:"+sum);
    }
    System.out.println(m + "个数的和为:" + sum);
    System.out.println(m + "个数的平均数为:" + (sum/m) );

    scanner.close();
}
/*run:
    请输入数字:
    10
    你输入了第1个数据,当前结果sum:10.0
    20
    你输入了第2个数据,当前结果sum:30.0
    30
    你输入了第3个数据,当前结果sum:60.0
    40
    你输入了第4个数据,当前结果sum:100.0
    x
    4个数的和为:100.0
    4个数的平均数为:25.0
*/

Original: https://www.cnblogs.com/fengye0518/p/16548544.html
Author: 落枫叶子
Title: Java学习 (10)Java流程控制篇(01)Scanner

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/589858/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【转】Spring Cache简介

    从3.1开始, Spring引入了对 Cache的支持。其使用方法和原理都类似于 Spring对事务管理的支持。 Spring Cache是作用在方法上的,其核心思想是这样的:当我…

    Java 2023年5月29日
    0111
  • 计算机编程领域的三十六种基本思想概览

    运用之妙,存乎一心。 引子 计算机编程领域的基本思想,是大量实践与经验的提炼总结,是近乎于”道”的指南。有了思想的指引,就如同有高人指路,行不迷惑,遇事有法…

    Java 2023年6月9日
    083
  • 蜻蜓点水说说Redis的String的奥秘

    本篇博客参考:掘金Redis小册 敖丙 如果面试官问你,单线程的Redis为什么那么快,你可能脱口而出,因为单线程,避免上下文切换;因为基于内存,比硬盘读写快很多;因为采用的是多路…

    Java 2023年6月5日
    079
  • 原来我还有网络天赋

    问题 如下图,之前公司有10多台服务器,都设置成了静态IP,因为现在更换成了类似IP为192.168.1.X 的1网段,看着下面的服务器,修改IP简单,但想想服务器里面还有许多配置…

    Java 2023年6月8日
    076
  • Skywalking-09:OAL原理——如何通过动态生成的Class类保存数据

    OAL 如何通过动态生成的 Class 类,保存数据 前置工作 OAL 如何将动态生成的 SourceDispatcher 添加到 DispatcherManager // org…

    Java 2023年6月5日
    089
  • springboot+druid+mybatis plus的多数据源配置

    @EnableTransactionManagement //开启事务 @Configura…

    Java 2023年5月30日
    057
  • 异步、邮件、定时任务

    异步、邮件、定时任务 14.1 异步任务 编写一个业务测试类 文件路径:com–dzj–service–AsynService.java @Se…

    Java 2023年6月5日
    081
  • 延时队列我在项目里是怎么实现的?

    我是3y,一年 CRUD经验用十年的 markdown程序员👨🏻‍💻常年被誉为职业八股文选手 前阵子,有个小伙伴找到问我,如果要实现 延时发送,那是基于什么来做的。 我看到这个问题…

    Java 2023年6月9日
    080
  • java thrift客户端调用服务时Integer类型参数传NULL,服务端接收到为0问题

    thrift是一种跨语言的RPC框架,为了保证在各种语言下都能正确表述,IDL语言在设计的时候就只能选取各种语言的共性。比如对于null,虽然在java中定义一个字段为Intege…

    Java 2023年5月29日
    078
  • vue3对比vue2获取通过refs获取组件数据

    vue2 1、组件设置 ref 标识 <van-calendar ref="calendarRef"> </van-calendar> …

    Java 2023年6月8日
    084
  • 【UML分析、建模与设计】我在工作时遇到UML

    一、前言 UML分析、建模与设计 来自现实世界中的概念的抽象描述方法(摘取自《UML面向对象分析、建模与设计(第2版)》) 就我对UML分析与建模技术的认知,最早可追溯至2019年…

    Java 2023年6月13日
    069
  • JPA作持久层操作

    JPA(Hibernate是jpa的实现) jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。虽然jpa可以直接通过编写java代码来操作数据库表结构,避免了sql…

    Java 2023年6月13日
    079
  • 使用ImageMagick将PDF转为图片

    生成单个图片 magick convert -density 220 -quality 80 3.pdf -append 3.jpeg 生成多张图片 magick convert …

    Java 2023年6月7日
    093
  • Redis学习笔记之安装

    Redis学习笔记之安装 一、Windown 下安装 2. 解压: 3. 加入环境变量(就不需要到解压目录运行命令) //redis-server.exe运行程序 //redis….

    Java 2023年6月5日
    073
  • Java中@Qualifier注解

    当使用@Autowired注解按照组件类型进行注入时,若存在多个相同类型的组件时,spring就不知道该注入哪个了。此时就可以在多个相同类型的组件上使用@Component(&#8…

    Java 2023年5月29日
    091
  • Java中关键的知识点

    JVM,运行是内存模型 Java 反射 Java 注解 函数式接口 lambda表达式/流式计算 动态代理 欢迎大家阅读,有问题和不足的地方欢迎大家指出。作者:永和九年,转载请注明…

    Java 2023年6月7日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球