Scanner类用法(学习笔记)

Scanner类用法(学习笔记,后续会补充)

1.next()用法

c 复制代码
package com.yushifu.scanner;
import java.util.Scanner;//util java工具包
//Scanner类(获取用户的输入)  Scanner s = new Scanner(System.in);
//通过Scanner类的next()与nextLine()方法获取输入的字符串
//在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("使用next()方法接收:");
        
        //判断用户有没有输入字符串
        if(scanner.hasNext()){//如果用户还有输入的话则执行
        
            String str = scanner.next();//使用next()方式接收
            System.out.println("输入的内容为:"+str);
        }
        
        //注意!凡是属于IO流的类如果不关闭会一直占用资源,要养成习惯,用完就关掉
        scanner.close();
    }
}

2.nextLine()用法

c 复制代码
package com.yushifu.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        //从键盘接收数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用nextLine方式接收:");
        if (scanner.hasNext()){
            String str = scanner.nextLine();
            
            System.out.println("输出的内容为"+str);
        }
        scanner.close();

    }
}

3.next()与nextLine用法的区别

  • (1)next()一定要读到用户输入有效字符后才会结束。
  • (2)next()会将输入有效字符之前遇到的空白去掉。
  • (3)只有输入有效字符后才将其后面输入的空白作为结束符,即空白后不会输出。
  • (4)next()不能得到带有空格的字符串
  • (5)nextLine()则以回车键(Enter)作为结束符,即nextLine()方法会接收回车之前键盘输入的所有字符。

    所以在平时使用中,nextLine()方法是使用的比较多的。

4.hasNext()

c 复制代码
package com.yushifu.scanner;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        //使用scanner从键盘接收数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("请您输入数字:");
        
        //使用hasNexT判断输入数据的类型
        if(scanner.hasNextInt()){//如果输入的是整数的话则执行语句体
            int m = scanner.nextInt();
            System.out.println("您输入的整数为:"+m);

        }else if(scanner.hasNextFloat()||scanner.hasNextDouble()){//如果是float或者double,则执行语句体
            System.out.println("您输入的数字类型为浮点数");
        }else{
            System.out.println("您输入的数据类型不是int、float、double类型。");
        }

    }
}

运行结果如下图所示:

当然hasNext()还有很多如下图所示其他的方法,有兴趣的读者朋友可以自行尝试。


Practice:输入多个数字,求其总和与平均数(平均数要求保留两位小数),每输入一个数字使用回车确认,通过输入非数字类型来结束输入并输出计算结果。

c 复制代码
package com.yushifu.scanner;
//Practice:输入多个数字,求其总和与平均数(平均数保留两位小数),
//每输入一个数字使用回车确认,通过输入非数字类型来结束输入并输出计算结果。
import java.util.Scanner;
/**
 * @author yushifu
 */
public class Demo04 {
    public static void main(String[] args) {
        //使用scanner接收键盘输入的数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据,输入非数字类型数据以结束.");
        //定义变量sum用于接收数字之和
        double sum = 0;
        //定义变量n计算输入数字的个数
        int n = 0;
        //定义变量mean用于接收输入数字的平均数
        double mean = 0;
        //通过循环判断是否还有输入,并且要对每一次输入进行求和
        //因为for循环多用于已知循环次数的情况下,所以我们使用while循环(未知循环次数时使用的较多)
        while (scanner.hasNextDouble()){
            double m = scanner.nextDouble();
            n++;//输入数字数量自增
            sum+=m;//输入数字累加和
            System.out.println("您输入了第"+n+"个数据,当前的和为"+sum);
        }
        mean = sum/n;
        //使用String format()方法设置double类型小数点后位数
        String formatDoubleMean = String.format("%.2f",mean);//这里博主后续会单独出一期java中double如何设置输出数据小数点位数的文章
        System.out.println("输入数字的个数为:"+n);
        System.out.println("输入数字的和为:"+sum);
        System.out.println("输入数字的平均数为:"+formatDoubleMean);//输出设置过小数点位数的平均数
        //养成使用IO流之后随手关闭的习惯
        scanner.close();
    }

}

运行效果图:

仅供学习使用!

相关推荐
lulinhao12 分钟前
HCIA/HCIP基础知识笔记汇总
网络·笔记
腥臭腐朽的日子熠熠生辉35 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian37 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之42 分钟前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
俏布斯1 小时前
算法日常记录
java·算法·leetcode
27669582921 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
WarPigs1 小时前
blender场景导入Unity的流程(个人总结)
笔记
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
程序猿chen2 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算