Scanner例题讲解

题:输入多个平均数,求其总和与平均数;每输入一个数用回车确认,通过输入非数字来结束输入并输出执行结果

 public class Demo05 {
     //输入多个平均数,求其总和与平均数;每输入一个数用回车确认,
     // 通过输入非数字来结束输入并输出执行结果
     public static void main(String[] args){
         double sum=0;  //和
         int m=0;  //个数
         Scanner scanner = new Scanner(System.in);
         //通过循环判断是否还有输入,并对每一次进行求和与计数
         while(scanner.hasNextDouble()){
             //用x收集数据
             double x=scanner.nextDouble();
             m++; //m=m+1
             sum=sum+x;
        }
         System.out.println(m + "个数的和为:" + sum);
         System.out.println(m + "个数的平均值为:" + (sum / m));
         scanner.close();  //别忘了
 ​
    }
 }

scanner.hasNextDouble:检测输入的值是否符合double类型,符合才会转化,若不符合double则结束输入(不能输入了)。输入的各个数据可以用空格或enter隔开。

重点:

  • scanner.nextdouble只能读取一个double,如:

 public class test {
     public static void main(String[] args) {
         Scanner scanner=new Scanner(System.in);
         double i=scanner.nextDouble();
         System.out.println(i);
    }
 }//输入多个double以空格隔开,只会读取第一个
  • 接收数据对象放在循环外还是循环内的问题,例

     public class Demo05 {
         //输入多个平均数,求其总和与平均数;每输入一个数用回车确认,
         // 通过输入非数字来结束输入并输出执行结果
         public static void main(String[] args){
             double sum=0;  //和
             int m=0;  //个数
             Scanner scanner = new Scanner(System.in);
             //通过循环判断是否还有输入,并对每一次进行求和与计数
             double x=scanner.nextDouble();
             while(scanner.hasNextDouble()){
                 //用x收集数据
                 //double x=scanner.nextDouble();
                 m++; //m=m+1
                 sum=sum+x;
            }
             System.out.println(m + "个数的和为:" + sum);
             System.out.println(m + "个数的平均值为:" + (sum / m));
             scanner.close();  //别忘了
        }
     }

    x的变量定义放在while里为正解,while循环一次x就定义一次。但是放在while外面时,.nextdouble只会读取一个即第一个double数据,当输入3.14 2.5 时,发现无法停止输入。因为x一直为3.14,nextdouble是对2.5进行判断,是符合double类型的,相当于没有检测到结束符,所以要求一直输入,while一直为true一直运行循环里;

    当输入3.14 asd时,x为3.14,nextdouble检测的是asd,为非double数据,相当于结束符,且while条件为false,结束循环。

  •  

Scanner例题讲解的更多相关文章

  1. JS之document例题讲解2

    例题三.图片轮播 <body> <div style="width:1000px; height:250px; margin-top:30px"> < ...

  2. JS之document例题讲解1(两张表之间数据转移、日期时间选择、子菜单下拉、用div做下拉菜单、事件总结)

    作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...

  3. UVA10200-Prime Time/HDU2161-Primes,例题讲解,牛逼的费马小定理和欧拉函数判素数。

                                                    10200 - Prime Time 此题极坑(本菜太弱),鉴定完毕,9遍过. 题意:很简单的求一个区间 ...

  4. php伪协议分析与CTF例题讲解

                本文大量转载于:https://blog.csdn.net/qq_41289254/article/details/81388343 (感谢博主) 一,php://  访问输入 ...

  5. Palindromic Tree 回文自动机-回文树 例题+讲解

    回文树,也叫回文自动机,是2014年被西伯利亚民族发明的,其功能如下: 1.求前缀字符串中的本质不同的回文串种类 2.求每个本质不同回文串的个数 3.以下标i为结尾的回文串个数/种类 4.每个本质不同 ...

  6. ajax讲解:“创建用户”和“用户登录”练习

    ajax可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面.   接下来,将以例子的形式进行讲解   例一:创建用户   ...

  7. 字典树 && 例题 Xor Sum HDU - 4825 (板子)

    一.字典树描述:Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优 ...

  8. 数位dp整理 && 例题HDU - 2089 不要62 && 例题 HDU - 3555 Bomb

    数位dp: 数位dp是一种计数用的dp,一般就是要统计一个区间[li,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp.数位的含义:一个数有个位.十位.百位.千位......数 ...

  9. 2-SAT 问题与解法小结

    2-SAT 问题与解法小结 这个算法十分的奇妙qwq... 将一类判定问题转换为图论问题,然后就很容易解决了. 本文有一些地方摘录了一下赵爽<2-SAT解法浅析> (侵删) 一些概念: \ ...

  10. Hash算法入门指南(聊点不一样的算法人生)

    前言 很多人到现在为止都总是问我算法该怎么学啊,数据结构好难啊怎么的,学习难度被莫名的夸大了,其实不然.对于一个学计算机相关专业的人都知道,数据结构是大学的一门必修课,数据结构与算法是基础,却常常容易 ...

随机推荐

  1. Dockerfile文件:设置变量启动的时候传递进去

    from openjdk:8-jdk-alpine RUN ln -sf /usr/share/zoneinfo/Asia/shanghai /etc/localtime RUN echo 'Asia ...

  2. ERP 软件为什么很贵?

    ERP软件的贵体现在两个方面,一个是软件系统贵,一个是部署实施贵,究其原因,就是ERP专业性太高.内部业务逻辑忒复杂,而面向形形色色的实体企业时个性化需求又加剧了它整体的复杂性,实施部署客制化无法避免 ...

  3. python实验报告(第五周)

    一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:使用字符串拼接输出一个关于程序员的笑话 ...

  4. 【Spring boot】整合tomcat底层原理

    本文结论 源码基于spring boot2.6.6 项目的pom.xml中存在spring-boot-starter-web的时候,在项目启动时候就会自动启动一个Tomcat. 自动配置类Servle ...

  5. you-get安装及使用

    you-get安装及使用 1.安装python 下载地址:https://www.python.org/downloads/ 配置环境变量:我的电脑 --> 属性 --> 高级系统设置 - ...

  6. 创建SpringMVC工程

    引入依赖 <dependencies> <!-- SpringMVC --> <dependency> <groupId>org.springframe ...

  7. 安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码

    文章目录 1.下载安装一个Python的编辑器notepad++,(我这里有现成的,也可以去网上搜很多) 2.安装python,(我这里有现成的,也可以去网上下载). 3.怎样彻底删除Python,有 ...

  8. 齐博x1小程序集群必须带上固定的标志

    小程序集群的也类似登录接口一样,需要带上特殊的标志.建议是在所有请求的头部header 加上 wxappid 如下图所示,跟登录标志 token 并列在一起. 如果不方便修改头部header 请求的时 ...

  9. 简读《ASP.NET Core技术内幕与项目实战》之3:配置

    特别说明:1.本系列内容主要基于杨中科老师的书籍<ASP.NET Core技术内幕与项目实战>及配套的B站视频视频教程,同时会增加极少部分的小知识点2.本系列教程主要目的是提炼知识点,追求 ...

  10. python django超链接

    之前用django框架打了一个简易的博客网站,现在说说怎么用django做超链接. 本文基于之前讲解的博客应用,如果只想学超链接请自行删减代码或评论提问. 首先,在templates文件夹下添加det ...