java Scanner笔记

Scanner类

  • 作用:
    实现人与程序交互,使接收用户的输入内容。

  • 语法:

    //System.in 代表用户输入的内容
    Scanner sc = new Scanner(System.in)
    
  • 主要方法:

    //判断和接收字符串,在判断语句中使用,hasNext()判断是否还有输入,如果有再用next()接收
    hasNext()
    next()
    //判断和接收字符串,在判断语句中使用,hasNextLine()判断是否还有输入,如果有再用nextLine()接收
    hasNextLine()
    nextLine()
    //判断和接收int型数字
    hasNextInt()
    nextInt()
    //判断和接收float型浮点数
    hasNextFloat()
    nextFloat()
    //判断和就收double型浮点数
    hasNextDouble()
    nextDouble()
    //
    short
    byte
    long
    boolean
    BigDecimal
    BigInteger
    等等...
    

    说明:

    1、方法主要分为三大类,第一类是hasNext()next()hasNextLine()nextLine(),第二类是hasNext数据类型()next数据类型()
    2、第一类用于接收字符串(区别在于能否处理空格,如下面所说),第二类用于接收不同的数据类型。has开头的是判断,结果是boolean类型。next开头的是获取。
    3、除了nextLine(),其他的next数据类型()都与next()类似。
    4、输入的数据是什么类型,接收时就要使用接收对应类型的方法。

    next()和nextLine()的区别:

    next():

     1、一定要读取到有效字符(输入空格不算有效字符)后才可以使用回车结束输入。
     2、显示结果时,next() 方法会自动去掉有效字符之前的空格。
     3、有效字符后的空格会被程序当作结束标志。
     4、next() 不能得到含有空格的字符串。
    
    public class Test {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入内容");
            if (sc.hasNext()){
                Object o = sc.next();
                System.out.println(o);
            }
        }
    }
    //如果输入:Hey Brother
    //输出结果为:Hey
    
    

    nextLine():

     1、以回车为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符包括空格。
     2、可以获得空格。
    

    说明:

     Scanner 使用完要记得使用其对象点close()方法关闭。
    

    有个练习题可以参考下:

     输入多个数字,求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。(不难,但是对于小白来说第一时间也不会直接想处方案,对于问题我们尽量自己研究、尝试,去寻找答案)
    
import java.util.Scanner;
 
class Test {
    public static void main(String[] args) {        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数字");
        //存放数字的总和
        double sum = 0;
        //存放输入数字的个数,每次输入一个数字
        int m = 0;
 		
 		//使用while循环(根据题意,通过输入非数字来结束输入),其条件可以判断输入的是不是数字,如果不是数字会跳出循环并输出结果。此处也可以使用其他循环。
        while (sc.hasNextDouble()) {
            double x = sc.nextDouble();
            m = m + 1;
            sum = sum + x;
        }
 
        System.out.println(m+"个数的总和为" + sum);
        System.out.println(m + "个数的平均值是" + (sum / m));
		
		//程序执行结束后,关闭Scanner释放资源
        sc.close();
    }
}

记录一个idea功能。

  • CTRL+鼠标左键 去点击代码,会进入该代码的源码,此时点击idea左侧的Structure可以看到源码的目录结构。

hasNext数据类型()和next数据类型()两个方法的意义

if (sc.hasNext()){
            Object o = sc.next();
            System.out.println(o);
        }

这个结构存在的意义,在于使你输入的参数类型与程序接受的参数类型一致,如果去掉上面的判断结构,输入与接收的数据类型可能不同而导致程序报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值