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. 通过Metricbeat实现外部对Elastic Stack的监控

    对于Elastic Stack监视的所有用户,建议使用外部数据收集. 概括一下: 关闭Elastic Stack自带的监控功能,然后使用metricbeat收集Elastic Stack数据传输到另外 ...

  2. Keepalived设置master故障恢复后不重新抢回VIP

    (1).master配置 ! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script check_ng ...

  3. python csv写入多列

    import csv import os def main(): current_dir = os.path.abspath('.') file_name = os.path.join(current ...

  4. Java 泛型程序设计

    1.  泛型类 public class Pair<T> { private T first; private T second; public void setSecond(T seco ...

  5. 移动端Vant组件库REM适配

    REM适配 基础配置 在页面布局之前,对REM进行配置,以适配移动端特点. 官方参考 Vant文档---->快速上手---->进阶用法---->Rem适配----> Vant ...

  6. sg函数入门理解

    首先理解sg函数必须先理解mex函数 mex是求除它集合内的最小大于等于0的整数,例:mex{1,2}=0:mex{2}=0:mex{0,1,2}=3:mex{0,5}=1. 而sg函数是啥呢? 对于 ...

  7. .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现

    在最新版的 .NET 平台中,微软在逐步放弃 System.Drawing.Imaging ,给出的理由如下: System.Drawing命名空间对某些操作系统和应用程序类型有一些限制. 在Wind ...

  8. token字段,请务加在请求地址的头部header

    如下图所示,你必须在请求的头部加上 token参数,主要原因有两个.第一点,这个是登录标志,因为接口访问用不了cookie,所以只能通过这个header请求标志判断用户是否已经登录.第二点,系统有时候 ...

  9. 6.Git忽略文件

    忽略指定文件 有些文件与实际功能无关,不参与服务器上部署运行,把他们忽略调能够屏蔽ide工具之间的差异 1.在工作区目录下创建xxx.gitignore文件 (前缀名随意) 以斜杠"/&qu ...

  10. BootStrap--selectpicker的使用

    bootstrap-select,selectpicker 用法详细:通过官方文档翻译   用过selectpicker的都说好~但是网上中文的教程又找不到比较完整的用法,于是去官网看了下 顺便弄过来 ...