Scanner类用法(学习笔记)

2023-11-18

Scanner类用法(学习笔记,后续会补充)

1.next()用法

package com.yushifu.scanner;
import java.util.Scanner;//util java工具包
//Scanner类(获取用户的输入)  Scanner s = new Scanner(System.in);
//通过Scanner类的next()与nextLine()方法获取输入的字符串
//在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("使用next()方法接收:");
        
        //判断用户有没有输入字符串
        if(scanner.hasNext()){//如果用户还有输入的话则执行
        
            String str = scanner.next();//使用next()方式接收
            System.out.println("输入的内容为:"+str);
        }
        
        //注意!凡是属于IO流的类如果不关闭会一直占用资源,要养成习惯,用完就关掉
        scanner.close();
    }
}

在这里插入图片描述

2.nextLine()用法

package com.yushifu.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        //从键盘接收数据
        Scanner scanner = new Scanner(System.in);

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

    }
}

在这里插入图片描述

3.next()与nextLine用法的区别

  • (1)next()一定要读到用户输入有效字符后才会结束。
  • (2)next()会将输入有效字符之前遇到的空白去掉。
    在这里插入图片描述
  • (3)只有输入有效字符后才将其后面输入的空白作为结束符,即空白后不会输出。
  • (4)next()不能得到带有空格的字符串
    在这里插入图片描述
  • (5)nextLine()则以回车键(Enter)作为结束符,即nextLine()方法会接收回车之前键盘输入的所有字符。
    在这里插入图片描述
    所以在平时使用中,nextLine()方法是使用的比较多的。

4.hasNext()

package com.yushifu.scanner;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        //使用scanner从键盘接收数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("请您输入数字:");
        
        //使用hasNexT判断输入数据的类型
        if(scanner.hasNextInt()){//如果输入的是整数的话则执行语句体
            int m = scanner.nextInt();
            System.out.println("您输入的整数为:"+m);

        }else if(scanner.hasNextFloat()||scanner.hasNextDouble()){//如果是float或者double,则执行语句体
            System.out.println("您输入的数字类型为浮点数");
        }else{
            System.out.println("您输入的数据类型不是int、float、double类型。");
        }

    }
}

运行结果如下图所示:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当然hasNext()还有很多如下图所示其他的方法,有兴趣的读者朋友可以自行尝试。
在这里插入图片描述


Practice:输入多个数字,求其总和与平均数(平均数要求保留两位小数),每输入一个数字使用回车确认,通过输入非数字类型来结束输入并输出计算结果。

package com.yushifu.scanner;
//Practice:输入多个数字,求其总和与平均数(平均数保留两位小数),
//每输入一个数字使用回车确认,通过输入非数字类型来结束输入并输出计算结果。
import java.util.Scanner;
/**
 * @author yushifu
 */
public class Demo04 {
    public static void main(String[] args) {
        //使用scanner接收键盘输入的数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据,输入非数字类型数据以结束.");
        //定义变量sum用于接收数字之和
        double sum = 0;
        //定义变量n计算输入数字的个数
        int n = 0;
        //定义变量mean用于接收输入数字的平均数
        double mean = 0;
        //通过循环判断是否还有输入,并且要对每一次输入进行求和
        //因为for循环多用于已知循环次数的情况下,所以我们使用while循环(未知循环次数时使用的较多)
        while (scanner.hasNextDouble()){
            double m = scanner.nextDouble();
            n++;//输入数字数量自增
            sum+=m;//输入数字累加和
            System.out.println("您输入了第"+n+"个数据,当前的和为"+sum);
        }
        mean = sum/n;
        //使用String format()方法设置double类型小数点后位数
        String formatDoubleMean = String.format("%.2f",mean);//这里博主后续会单独出一期java中double如何设置输出数据小数点位数的文章
        System.out.println("输入数字的个数为:"+n);
        System.out.println("输入数字的和为:"+sum);
        System.out.println("输入数字的平均数为:"+formatDoubleMean);//输出设置过小数点位数的平均数
        //养成使用IO流之后随手关闭的习惯
        scanner.close();
    }

}

运行效果图:
在这里插入图片描述
仅供学习使用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scanner类用法(学习笔记) 的相关文章

  • 当转义引号存在时,在外部引号或外部方括号中分割逗号

    是否可以按照以下条件拆分字符串 用 即逗号 分隔 在每个元素上 忽略第一个 和最后一个 内的逗号检查 在每个元素上 忽略第一个 和最后一个 内的逗号检查 e g String source to char DATE YYYY MM DD I
  • TaskSchedulerImpl:初始作业尚未接受任何资源;

    这就是我正在尝试做的事情 我创建了DataStax企业集群的两个节点 在其上创建了一个java程序来获取一张表 Cassandra数据库表 的计数 该程序是在 eclipse 中构建的 实际上是来自 windows 盒子 从 Windows
  • 非常大的 JTable、RowFilter 和额外负载

    我想请求澄清 RowFilter 的使用及其对性能的影响 我通过 include Entry 方法实现了一个过滤器 对于每一行 只需检查模型中其对应值是否设置了布尔标志 如果是 则返回 true 否则返回 false 现在 我拥有的 JTa
  • 按钮和窗口之间的空间

    我这里有这段代码 其想法是在主窗口中在文本区域旁边有两个按钮 但我尚未添加 在尝试使用 GridBagLayout 并在此过程中扯掉我的头发后 我决定不使用布局并在不可调整大小的窗口内手动放置按钮 import java awt impor
  • API 级别 15 的印地语字体(又名 Android 4.0.2)

    我有一个基于印地语内容的 Android 应用程序 并使用了 Android API 16 SDK 中的 devangiri 字体 并重命名为印地语 ttf 文本在 API 级别 16 和 17 上渲染良好 但在 Android API 级
  • 将泛型与 Firebase snapshot.getValue() 结合使用的最佳实践

    TL DR 如何正确使用 Firebase DataSnapshot getValue 的泛型类 用例 我想使用 Firebase 为我的所有实体 其中一堆 实现一个通用远程数据源类 当监听数据更改时 我想从 datasnapshot 获取
  • 从列表中删除对象的最佳方法是什么

    我有以下逻辑来删除系统中的非活动用户 因为我们在迭代列表时无法删除行 有更好的方法来处理这个问题吗 List
  • 如何在活动之间传递大型集合(主从流)

    背景 我正在实现一个从网络服务读取有关电影信息的应用程序 该网络服务返回有关每部电影的一些信息 标题 日期 海报网址 导演 演员等 该 Web 服务支持分页 因此电影以 100 部为一组加载 执行 这个想法是显示一个包含所有海报的网格 当用
  • 更新写入 java 文本文件的对象

    将 Java 对象或列表写入文本文件是可以的 但我想知道如何更新或重写以前写入的对象而不再次写入对象 例如 假设有一个 java util List 有一组对象 然后将该列表写入文本文件 然后稍后该文件将被再次读取并从列表中获取所有对象 然
  • 修改void函数的输入参数并随后读取它

    我有一个相当复杂的 java 函数 我想使用 jUnit 进行测试 并且我正在使用 Mockito 来实现此目的 这个函数看起来像这样 public void myFunction Object parameter doStuff conv
  • 为什么这个 SimpleDateFormat 无法解析这个日期字符串?

    简单日期格式 SimpleDateFormat pdf new SimpleDateFormat MM dd yyyy hh mm ss SSSaa 抛出的异常pdf parse Mar 30 2010 5 27 40 140PM java
  • Servlet上下文和Spring应用程序上下文的本质区别

    我正在阅读 spring 框架文档 现在我在应用范围概念 http docs spring io spring docs current spring framework reference htmlsingle beans factory
  • 对 JFace Treeviewer 多列进行排序

    我希望用户能够对TreeViewer只要他想 只要单击列标题即可 但是我不知道正确的方法 我发现我们可以使用ViewerComparator对不同的元素进行排序 但是 我不知道如何设置侦听器以便能够正确进行升序或降序排序 有没有办法让 JF
  • 如何使用正则表达式提取子字符串

    我有一个字符串 其中有两个单引号 特点 单引号之间是我想要的数据 如何编写正则表达式从以下文本中提取 我想要的数据 mydata some string with the data i want inside 假设您想要单引号之间的部分 请
  • JAXB 是否支持 xsd:restriction?

  • 错误:升级到 lombok 1.16.2 后包 javax.annotation 不存在

    我的 android 项目使用 lombok 1 16 0 构建得很好 但是一旦我将依赖项更改为目标 1 16 2 我在使用 lombok 注释的任何地方都会收到以下错误 Error 20 1 error package javax ann
  • 如何使用 Maven 创建新的 Eclipse RCP 项目?

    如何使用 Maven 创建新的 Eclipse RCP 项目 最好是m2eclipse http maven apache org eclipse plugin html 我读到有一个关于 Eclipse 的 Maven 插件 Maven
  • 无法在 JDBCPreparedStatement 中使用 LIKE 查询吗?

    查询代码及查询方式 ps conn prepareStatement select instance id from eam measurement where resource id in select RESOURCE ID from
  • onActivityresult 数据为空

    这是我的相机应用程序 我想在其中捕获图像并裁剪它 但它拍照保存在我的 myimage 目录中 但不执行裁剪功能 请我需要帮助 我是这个领域的新人 这是我的相机开源代码 Intent intent new Intent MediaStore
  • 使用 Java Swing 平均成绩 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个家庭作业 我一直在编码 我以

随机推荐

  • 【mysql】-【innodb数据存储结构】

    文章目录 数据库的存储结构 页 磁盘与内存交互基本单位 页 页结构概述 页的大小 页的上层结构 页的内部结构 File Header 文件头部 和File Trailer 文件尾部 File Header 文件头部 38字节 File Tr
  • Vue3-导出excel表格

    安装xlsx和file saver yarn add file saver xlsx 或 npm install file saver S npm install xlsx S 页面引入xlsx和file saver import as X
  • 不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事...

    文章授权转载自视觉志 版权归原作者所有 作者 不一 2009年 19岁的孙玲和朋友一起 坐上了前往深圳的绿皮火车 经过14个小时的疲倦车程 她有了一个全新的身份 工厂车间 流水线上的一名女工 那个时候 如果有人告诉孙玲 你以后会成为一名优秀
  • 无限创建gmail邮箱账号

    文章目录 说明 准备工作 操作方法 1 用户名之间加 2 用户名后面加 3 把后缀变为http googlemail com 说明 国外很多网站都需要gmail邮箱注册 如果能有很多gmail账号 那么就能做很多事 自己体会哈 注册地址 h
  • Python 模块与包

    1 模块 一个模块就是一个包含python代码的文件 后缀名称是 py就可以 模块就是个python文件 为什么我们用模块 程序太大 编写维护非常不方便 需要拆分 模块可以增加代码重复利用的方法 当作命名空间使用 避免命名冲突 如何定义模块
  • Bluetooth(HC)与STM32的连接通讯(在手机端通过蓝牙控制STM32板子小灯)

    一 说明 写本文的目的是抛弃一些比较专业的描述 从一些刚接触的小白角度出发 帮助此类朋友解决一些问题 所以内容都是用比较通俗的白话来写 网上已经有许多的比较专业的描述教程 若你想要一些比较专业性的描述 本人建议你看其他朋友的 二 概论 本文
  • 云孚科技助力第三届中国情感计算大会(CCAC 2023)胜利召开

    中国情感计算大会CCAC 2023年6月30日 7月2日 由中国中文信息学会情感计算专委会主办 西安交通大学承办的第三届中国情感计算大会 The Third Chinese Conference on Affective Computing
  • 与大家讨论如何用opencore amr在iOS上decode(已解决)

    两周前空闲的时候编译了opencore for iOS 如何编译的请参看这一篇文章 今天又有空 所以就试着去用了一下这个库 我想把 amr的文件decode为 wav格式的 在test目录下有简单的例子 教大家如何用这个库 于是我就照着里面
  • 解决 ifconfig: command not found

    apt get install net tools
  • Swing简单的文件上传

    package com iss iaf codemanagement import javax swing JOptionPane 代码管理应用程序 项目的入口 author xinzhangah data 2016 12 02 publi
  • 区块链能否推进教育行业的发展?

    随着互联网时代的到来 现在教育行业的教学模式 已经脱离了原先的黑板板书以及书本就读 信息的传播化将传统的教育行业带入了快速接受信息的时代 而不管是网上选课还是课程的在线直播 都是要通过第三方的平台才可以获取这些信息的 但是在方便人们学习的时
  • Distributed System Transaction —— 2PL

    文章目录 2PL 并发控制常见的方式有2PL MVCC等方式 2PL 两阶段锁 two phase locking 是用来解决多线程之间的竞态条件的 其算法非常简单 数据库中的每一个数据对象都有两种锁 S hared lock 和 e X
  • 移动端表格组件

    最近在vue开发移动端过程中 需要用到表格展示 经过多方面对比感觉这个不错 https www csdn net tags Mtjacg4sOTk1NDctYmxvZwO0O0OO0O0O htmlhttps www csdn net ta
  • 软件测试系统学习流程和常见面试题

    在学习软件测试的时候你是否会感觉到不知从何下手 今天教导你们软件测试学习的系统流程和面试常见的问题 学习流程 一 必备技能 1 编程基础 能看懂前端页面 掌握一门语言 php python java等 2 数据库知识 建议准备好sql语言
  • 自然语言处理: 第七章GPT的搭建

    自然语言处理 第七章GPT的搭建 理论基础 在以transformer架构为框架的大模型遍地开花后 大模型的方向基本分成了三类分别是 decoder only架构 其中以GPT系列为代表 encoder only架构 其中以BERT系列为代
  • QT---UI的使用

    目录 一 UI的介绍 二 UI的使用 一 UI的介绍 UI的使用是指通过拖拽控件来绘制界面 二 UI的使用
  • Java设计模式——外观模式

    文章目录 外观模式 外观模式 外观模式是为了解决类与类之家的依赖关系的 像spring一样 可以将类和类之间的关系配置到配置文件中 而外观模式就是将他们的关系放在一个Facade类中 降低了类类之间的耦合度 该模式中没有涉及到接口 看下类图
  • 【自然语言处理

    文章目录 一 前言 二 详细介绍 2 1 token 2 2 embedding 2 3 encoding 一 前言 token 模型输入基本单元 比如中文BERT中 token可以是一个字 也可以是等标识符 embedding 一个用来表
  • python 判断字符串开头_python 怎么判断字符串开头

    函数 startswith 作用 判断字符串是否以指定字符或子字符串开头 python学习网 大量的免费python视频教程 欢迎在线学习 一 函数说明 语法 string startswith str beg 0 end len stri
  • Scanner类用法(学习笔记)

    Scanner类用法 学习笔记 后续会补充 1 next 用法 package com yushifu scanner import java util Scanner util java工具包 Scanner类 获取用户的输入 Scann