Day15:流程控制02:Scanner进阶使用

Scanner对int,浮点数的支持

  • 如果…那么
if{

   }else{

}
package com.kuang.scanner;

import java.util.Scanner;

//Scanner对int,浮点数的支持
public class Demo04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

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

        System.out.println("请输入整数:");
         //如果...那么  如果是真的就执行16~18行
        if (scanner.hasNextInt()){     //判断输入的是否还有int
             i = scanner.nextInt();  //等待输入是否为整数,如果有就接收  i前不用int,只第一次定义,后面直接用
            System.out.println("整数数据:"+i);
        }else{//否则的意思
            System.out.println("您输入的不是整数数据!");
        }
        scanner.close();
    }
}

在这里插入图片描述
在这里插入图片描述
小数同理
只需改成:

            if (scanner.hasNextFloat())
             f = scanner.nextFloat();
             System.out.println("整数数据:"+f);

合并

package com.kuang.scanner;

import java.util.Scanner;

//Scanner对int,浮点数的支持
public class Demo04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

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

        System.out.println("请输入整数:");
         //如果...那么  如果是真的就执行16~18行
        if (scanner.hasNextInt()){     //判断输入的是否还有int
             i = scanner.nextInt();  //等待输入是否为整数,如果有就接收  i前不用int,只第一次定义,后面直接用
            System.out.println("整数数据:"+i);
        }else{//否则的意思
            System.out.println("您输入的不是整数数据!");
        }

        System.out.println("请输入小数:");
        if(scanner.hasNextFloat()){
             f = scanner.nextFloat();
            System.out.println("小数数据:"+f);
        }else {
            System.out.println("您输入的不是小数数据!");
        }
        scanner.close();
    }
}

解析

输出正确数字

  • 结果为:
    在这里插入图片描述
    由于条件不成立,所以没有运行else
    • if (scanner.hasNextInt()){
      i = scanner.nextInt();
      System.out.println(“整数数据:”+i);
      }else{
      System.out.println(“您输入的不是整数数据!”);

      }
      停在 f = scanner.nextFloat();因为这个方法可以等待用户输入

程序结束
在这里插入图片描述


输出错误数字

在这里插入图片描述

  • 因为输出的不是整数,所以执行else后
    if (scanner.hasNextInt()){
    i = scanner.nextInt();
    System.out.println(“整数数据:”+i);
    }
    else{
    System.out.println(“您输入的不是整数数据!”);
    }
  • 之后运行System.out.println(“请输入小数:”);
    if(scanner.hasNextFloat()){
    f = scanner.nextFloat();
    System.out.println(“小数数据:”+f);
    }else {
    System.out.println(“您输入的不是小数数据!”);
    }

    scanner.close();
    }
    }
    因为10.1是小数所以执行else前,直到关闭scanner

Ctrl+左键点击类,可以进到类的源码
在这里插入图片描述

练习

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

package com.kuang.scanner;

import java.util.Scanner;

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



        double sum = 0;//代表它的和,除了和还需要计算输入多少数字
        int m = 0;//计算输入多少数字
        System.out.println("请输入数据");
        //通过循环判断是否还有输入,并在里面对每一次进行求和&统计
        while(scanner.hasNextDouble()){//循环语句,会不停的走,直到结束或者bug
        double x = scanner.nextDouble();//是否还有下一个数,如果有就保存在变量里
            //输入完一个数,就让m+1
        m = m+1;//m++
        sum = sum + x;//和=当前的和+输入的数字  比如输入第一个数字x=10,则sum=10,第二次20,不停累加
        System.out.println("你输入了第"+m+"个数据,当前sum="+sum);
        }
        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值" + (sum / m));
        scanner.close();
    }
}

解析

  1. 首先根据题目要求定义了两个变量,定义了用户交互Scanner(无先后顺序)
        double sum = 0;
        int m = 0;
        Scanner scanner = new Scanner(System.in);

  1. 接着先在屏幕上输出
System.out.println("请输入数据");

  1. 通过while判断是否还有输入,并在里面对每一次进行求和&统计,while语句会不停的走,直到结束或者bug
            while(scanner.hasNextDouble()){//判断输入的是否还有Double
            double x = scanner.nextDouble();//是否还有下一个数,如果有就接收并保存在变量里,这个地方在等待接收,直到按下回车,在}处重新进入下一个循环
            m = m+1;//m++,每个循环都会加一,先赋值再增加
            sum = sum + x;//和=当前的和+输入的数字  比如输入第一个数字x=10,则sum=10,第二次20,不停累加
            System.out.println("你输入了第"+m+"个数据,当前sum="+sum);
        }//通过字符串连接符+ 把每次输入数据按下回车之后的信息显示出来
  1. 循环直到不满足为double类型是跳出循环,然后用
        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值" + (sum / m));

把跳出后的计算次数,总和,平均值用连接符显示
最后scanner.close();

  • 关闭Scanner,因为是属于io流的类,不关闭会占用资源
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值