java Scanner类

Scanner类

概述:JDK5以后用于获取用户的键盘输入,是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

构造方法
1public Scanner(InputStream source);

    System类有一个静态的字段:

	public static final InputStream in;  标准的输入流,对应着键盘录入。

	InputStream  source = System.in;
成员方法
方法 描述
public boolean hasNextXxx(); 判断是否还有下一个输入项,其中Xxx可以是任意类型的,如:Int、Double等。如果是判断是否包含下一个字符串,则可以省略Xxx。
public Xxx nextXxx(); 获取下一个输入项,Xxx的含义和上个方法中的Xxx相同 注意:默认情况下,Scanner使用空格、回车、tab等作为分隔符
常用方法

(1)public int nextInt(); 获取一个int类型的值

(2)public String nextLine(); 获取一个String类型的值,接收缓冲区中所有的字符,在遇到回车换行符时停止,回车换行符也会接收掉

(3)public String next(); 接收到缓冲区第一个有效字符(之前的分隔符自动过滤,不接收)开始,遇到的第一个分隔符结束(tab键,空格,回车换行),分隔符不会接收掉

nextLine()获取不到数据问题

注意:如果nextLine()之前有其他Scanner类的next方法时,会受到影响,失去录入机会

主要原因:换行符号的问题,前面说到,nextXxx()方法默认使用空格、回车等作为分隔符,当单纯输入一个数字时,并不会立刻执行下一语句,而是会等用户输入分隔符,如果此时用户输入的是空格,那没事;如果用户是回车,那后面的nextLine()将获取不到数据。对nextInt()等数值类型,只会获取单个字符,所以没事,对于next()来说,方法读取数据的结束标志就是分隔符,当next()在缓存区读取数据时,一旦发现分隔符就会直接将分隔符前的数据读取走,但是并不会处理分隔符。对于nextLine()来说,方法读取数据结束的标志是回车符,它获取的是一行字符串,当输入回车符时,也会被它当成是字符串的一员全部读入,然后结束读取。

//1. 导包
import java.util.Scanner;

public class Test {
   
    public static void main(String[] args) {
   
        //2. 创建键盘录入数据的对象
        Scanner sc = new Scanner(System.in);
        //3. 接收数据
        System.out.println("请录入一个整数:");
        int i = sc.nextInt();
        System.out.println("请录入一个浮点数:");
        double d = sc.nextDouble(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值