scanner进阶

正则表达式

  • \\d:表示一个数字(0-9)

  • +:表示「前面的数字可以出现 1 次或多次」

  • \\.:表示小数点

  • \\d+:表示小数点后面,数字也可以出现 1 次或多次

  • *:匹配 0 次或多次

  • ?:匹配 0 次或 1 次

  • {n}:匹配固定的 n 次

一 判断小数整数

package com.flower.scanner;  
  
import java.util.Scanner;  
  
public class Demo04 {  
  
    static void main(String[] args) {  
  
        //接收键盘数据  
        Scanner scanner = new Scanner(System.in);  
  
        //存入数据  
        int i = 0;  
        String str;  
  
        System.out.println("请输入整数:");  
  
        //如果......那么    判断输入的数据,是否为整数数据  
        if (scanner.hasNextInt()) {  
  
            //将接受到的整数存入变量i中  
            i = scanner.nextInt();  
  
            System.out.println("整数数据:"+i);  
        } else {  
  
            System.out.println("输入的不是整数数据!");  
        }  
  
        System.out.println("请输入小数:");  
  
        //判断输入的数据,是否为小数数据  
        if (scanner.hasNextFloat()) {  
  
            //接收小数数据  
            str = scanner.next();  
  
            //matches(regex) = 判断「整个字符串」是不是「从头到尾完全符合正则规则」,是就返回 true,否则 false。  
            if (str.matches("\\d+\\.\\d+")) {  
  
                System.out.println("小数数据:"+str);  
            } else {  
  
                System.out.println("输入的是整数:"+str+",不是小数!");  
            }  
  
        } else {  
  
            System.out.println("输入的不是有效数据!");  
        }  
  
        //关闭流  
        scanner.close();  
    }  
}

二 输入多个数字求平均数

package com.flower.scanner;  
  
import java.util.Scanner;  
  
public class Demo06 {  
  
    static void main(String[] args) {  
  
        //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入,并输出执行结果。  
        //获取键盘输入  
        Scanner scanner = new Scanner(System.in);  
  
        //和  
        double sum = 0;  
        //计算输入了多少个数字  
        int countNum = 0;  
  
        //通过循环来判断是否还有输入,并在里面对每一次输入,进行求和和统计  
        while (scanner.hasNextDouble()) {  
  
            //获取输入的数  
            double totalNum = scanner.nextDouble();  
  
            //输入次数  
            countNum = countNum + 1; // countNum++  
            //总和  
            sum = sum + totalNum;  
  
            System.out.println("你输入了第"+countNum+"个数据,当前结果sum="+sum);  
            //System.out.println(STR."你输入了第\{countNum}个数据,当前结果sum=\{sum}");  
        }  
        System.out.println(countNum+"个数字的和为:"+sum);  
  
        System.out.println(countNum+"个数字的平均值为:" + (sum / countNum));  
        //不用拼接,可读性更好,可能不兼容  
        //System.out.println(STR."\{countNum}个数字的平均值为:\{sum / countNum}");  
  
        //关闭流  
        scanner.close();  
    }  
}
posted @ 2026-05-27 17:08  花时玉  阅读(14)  评论(0)    收藏  举报