【Java基础】16.Scanner类常用方法、hasNextXxx()


前言

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法:

Scanner s = new Scanner(System.in);

一、常用方法

1.next方法

next():

  1. 一定要读取到有效字符后才可以结束输入。
  2. 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  4. next() 不能得到带有空格的字符串。
// 1、导包操作 (并不需要自己写的,以后通过工具进行导入更方便)
import java.util.Scanner;

/**
 * @ClassName: ScannerDemo
 * @Description: Scanner类, next()方法
 * @author: Zh
 * @date: 2024/4/15 20:43
 */
public class ScannerNextDemo {
    public static void main(String[] args) {
        // 2、得到一个键盘扫描器对象
        Scanner sc = new Scanner(System.in);

        // next方式接收字符串
        System.out.println("next方式接收:");
        // 判断是否还有输入
        if (sc.hasNext()) {
            String str1 = sc.next();
            System.out.println("输入的数据为:" + str1);
        }
        sc.close();

    }
}

编译运行结果如下:

next方式接收:
Hello Java
输入的数据为:Hello

2.nextLine方法

nextLine():

  1. 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  2. 可以获得空白。
// 1、导包操作 (并不需要自己写的,以后通过工具进行导入更方便)
import java.util.Scanner;

/**
 * @ClassName: ScannerDemo
 * @Description: Scanner类
 * @author: Zh
 * @date: 2024/4/15 20:43
 */
public class ScannerNextLineDemo {
    public static void main(String[] args) {
        // 2、得到一个键盘扫描器对象
        Scanner sc = new Scanner(System.in);

        // nextLine方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判断是否还有输入
        if (sc.hasNextLine()) {
            String str2 = sc.nextLine();
            System.out.println("输入的数据为:" + str2);
        }
        sc.close();

    }
}

编译运行结果如下:

nextLine方式接收:
Hello Java
输入的数据为:Hello Java

3.常用方法

  • nextBigDecimal():获取输入的BigDecimal类型的数字。
  • nextBigInteger():获取输入的BigInteger类型的数字。
  • nextBoolean():获取输入的Boolean类型,即true和false。
  • nextByte():获取输入的Byte类型的数字。
  • nextDouble():获取输入的Double类型的数字。
  • nextFloat():获取输入的Float类型的数字。
  • nextInt():获取输入的Int类型的数字。
  • nextLong():获取输入的Long类型的数字。
  • nextShort():获取输入的Short类型的数字
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

/**
 - @ClassName: ScannerDemo
 - @Description: Scanner类
 - @author: Zh
 - @date: 2024/4/15 20:43
 */
public class ScannerDemo {
    public static void main(String[] args) {
        // 2、得到一个键盘扫描器对象
        Scanner input = new Scanner(System.in);

        // nextBigDecimal()
        System.out.println("请输入一个BigDecimal类型的数字");
        BigDecimal bd = input.nextBigDecimal();
        System.out.println("BigDecimal类型: " + bd);

        // nextBigInteger()
        System.out.println("请输入一个BigInteger类型的数字");
        BigInteger bi = input.nextBigInteger();
        System.out.println("BigInteger类型: " + bi);

        // nextBoolean()
        System.out.println("请输入一个Boolean类型");
        boolean bl = input.nextBoolean();
        System.out.println("Boolean类型: " + bl);

        // nextByte()
        System.out.println("请输入一个Byte类型的数字");
        byte by = input.nextByte();
        System.out.println("Byte类型: " + by);

        // nextDouble()
        System.out.println("请输入一个Double类型的数字");
        double db = input.nextDouble();
        System.out.println("Double类型: " + db);

        // nextFloat()
        System.out.println("请输入一个Float类型的数字");
        float fl = input.nextFloat();
        System.out.println("Float类型: " + fl);

        // nextInt()
        System.out.println("请输入一个Int类型的数字");
        int i = input.nextInt();
        System.out.println("Int类型: " + i);

        // nextLong()
        System.out.println("请输入一个Long类型的数字");
        long l = input.nextLong();
        System.out.println("Long类型: " + l);

        // nextShort()
        System.out.println("请输入一个Short类型的数字");
        short s = input.nextShort();
        System.out.println("Short类型: " + s);

    }
}

编译运行结果如下:

请输入一个BigDecimal类型的数字
11.22
BigDecimal类型: 11.22
请输入一个BigInteger类型的数字
23
BigInteger类型: 23
请输入一个Boolean类型
true
Boolean类型: true
请输入一个Byte类型的数字
56
Byte类型: 56
请输入一个Double类型的数字
77.88
Double类型: 77.88
请输入一个Float类型的数字
88.99
Float类型: 88.99
请输入一个Int类型的数字
100
Int类型: 100
请输入一个Long类型的数字
120
Long类型: 120
请输入一个Short类型的数字
130
Short类型: 130

二、hasNextxxx()

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。

  • hasNext():判断是否有输入。
  • hasNextLine():判断是否有输入。
  • hasnextBigDecimal():判断输入是否是BigDecimal类型。
  • hasnextBigInteger():判断输入是否是BigInteger类型。
  • hasnextBoolean():判断输入是否是BigBoolean类型。
  • hasnextByte():判断输入是否是Byte类型。
  • hasnextDouble():判断输入是否是Double类型。
  • hasnextFloat():判断输入是否是Float类型。
  • hasnextInt():判断输入是否是Int类型。
  • hasnextLong():判断输入是否是Long类型。
  • hasnextShort():判断输入是否是Short类型
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

/**
 * @ClassName: ScannerDemo
 * @Description: Scanner类
 * @author: Zh
 * @date: 2024/4/15 20:43
 */
public class ScannerDemo2 {
    public static void main(String[] args) {
        // 2、得到一个键盘扫描器对象
        Scanner input = new Scanner(System.in);

        // hasNextBigDecimal()
        System.out.println("请输入一个BigDecimal类型的数字");
        BigDecimal bd2;
        if (input.hasNextBigDecimal()) {
            bd2 = input.nextBigDecimal();
            System.out.println("BigDecimal类型: " + bd2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextBigInteger()
        System.out.println("请输入一个BigInteger类型的数字");
        BigInteger bi2;
        if (input.hasNextBigInteger()) {
            bi2 = input.nextBigInteger();
            System.out.println("BigInteger类型: " + bi2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextBoolean()
        System.out.println("请输入一个Boolean类型");
        boolean bl2;
        if (input.hasNextBoolean()) {
            bl2 = input.nextBoolean();
            System.out.println("Boolean类型: " + bl2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextByte()
        System.out.println("请输入一个Byte类型的数字");
        byte by2;
        if (input.hasNextByte()) {
            by2 = input.nextByte();
            System.out.println("Byte类型: " + by2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextDouble()
        System.out.println("请输入一个Double类型的数字");
        double db2;
        if (input.hasNextDouble()) {
            db2 = input.nextDouble();
            System.out.println("Double类型: " + db2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextFloat()
        System.out.println("请输入一个Float类型的数字");
        float fl2;
        if (input.hasNextFloat()) {
            fl2 = input.nextFloat();
            System.out.println("Float类型: " + fl2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextInt()
        System.out.println("请输入一个Int类型的数字");
        int i2;
        if (input.hasNextInt()) {
            i2 = input.nextInt();
            System.out.println("Int类型: " + i2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextLong()
        System.out.println("请输入一个Long类型的数字");
        long l2;
        if (input.hasNextLong()) {
            l2 = input.nextLong();
            System.out.println("Long类型: " + l2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

        // hasNextShort()
        System.out.println("请输入一个Short类型的数字");
        short s2;
        if (input.hasNextShort()) {
            s2 = input.nextShort();
            System.out.println("Short类型: " + s2);
        }else {
            // 输入错误的信息
            System.out.println("输入错误!");
        }

    }
}

编译运行结果如下:

请输入一个BigDecimal类型的数字
11.1
BigDecimal类型: 11.1
请输入一个BigInteger类型的数字
2
BigInteger类型: 2
请输入一个Boolean类型
false
Boolean类型: false
请输入一个Byte类型的数字
22
Byte类型: 22
请输入一个Double类型的数字
33
Double类型: 33.0
请输入一个Float类型的数字
44.5
Float类型: 44.5
请输入一个Int类型的数字
5
Int类型: 5
请输入一个Long类型的数字
66
Long类型: 66
请输入一个Short类型的数字
77
Short类型: 77
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值