Day 12

scanner进阶

Scanner 与if结合:

package oui;
import java.util.Scanner;

public class Day12 {
    public static void main(String[] args)
    {
        int i;/*定义在方法中的中的变量不管是否赋值,
        结构体都会永久改变他(如:重新赋值或者运算,
        但是只定义在结构体中的变量出了结构体就无人认识了*/
        float f;
        Scanner sc = new Scanner(System.in);
        // 如果缓冲区无值,has也会出发输入,不消费且缓冲区多一个值
        if(sc.hasNextInt()) {//hasnext()这些语法不会消费值
        i =sc.nextInt();//可输入多个值,直接一次执行下面遇到的next与hasnext的操作
        System.out.println("int为"+i);
        }else{
            System.out.println("这不是int类型");
        }
        System.out.println("请输入小数");
        if (sc.hasNextFloat()){//值会自动转化
            f =sc.nextFloat();
            System.out.println("小数为"+f);
        }
                sc.close();
        }
    }

Scanner完成简单运算while结合:

package oui;

import java.util.Scanner;

public class Day12_1_1 {
    public static  void main() {
        int i = 0;
        int sum = 0;
        Scanner sc = new Scanner(System.in);


        while (sc.hasNextInt()) {
            double x = sc.nextInt();
            i++;
            sum += x;
        }
        System.out.println(sum);
        System.out.println(sum / i);
    }

注意:

  • has等用法不会消费掉缓冲区的值
  • next等用法只在当前语句中生效
  • 不同Scannner对象有不同缓存区但共用一个System.in
  • 也存在类型自动转化
  • 多余的值也可以用next()用法去消耗掉
posted on 2026-09-07 19:52  猫头鹰(新手版)  阅读(6)  评论(0)    收藏  举报