java中Scanner类的用例

Scanner类


在 Java 中,Scanner 类位于 java.util 包下,它主要用于获取用户的输入或从文件、字符串等数据源中读取数据。Scanner 类提供了一系列方便的方法来解析基本数据类型和字符串,使得处理输入变得简单。以下是对 Scanner 类的详细介绍:

  1. 引入 Scanner

由于 Scanner 类在 java.util 包中,所以在使用之前需要进行导入:

import java.util.Scanner;
  1. 创建 Scanner 对象

Scanner 类有多个构造方法,常用的是将 System.in 作为参数来创建一个可以从标准输入(通常是键盘)读取数据的 Scanner 对象,示例如下:

java

Scanner scanner = new Scanner(System.in);

此外,还可以使用文件对象、字符串等作为参数创建 Scanner 对象,用于从文件或字符串中读取数据,示例如下:

java

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
​
public class ScannerExample {
    public static void main(String[] args) {
        try {
            // 从文件中读取数据
            File file = new File("example.txt");
            Scanner fileScanner = new Scanner(file);
​
            // 从字符串中读取数据
            String input = "Hello 123";
            Scanner stringScanner = new Scanner(input);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
  1. 常用方法

3.1 读取基本数据类型

  • nextInt():读取一个整数。

  • nextDouble():读取一个双精度浮点数。

  • nextBoolean():读取一个布尔值。

  • nextByte():读取一个字节类型的数据。

  • nextFloat():读取一个单精度浮点数。

  • nextLong():读取一个长整型数据。

  • nextShort():读取一个短整型数据。

示例代码

java

import java.util.Scanner;
​
public class ReadPrimitiveTypes {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
​
        System.out.print("请输入一个整数: ");
        int num = scanner.nextInt();
        System.out.println("你输入的整数是: " + num);
​
        System.out.print("请输入一个双精度浮点数: ");
        double d = scanner.nextDouble();
        System.out.println("你输入的双精度浮点数是: " + d);
​
        scanner.close();
    }
}
​

3.2 读取字符串

  • next():读取一个以空白字符(如空格、制表符、换行符等)分隔的字符串。

  • nextLine():读取一整行文本,直到遇到换行符为止。

示例代码

java

import java.util.Scanner;
​
public class ReadStrings {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
​
        System.out.print("请输入一个单词: ");
        String word = scanner.next();
        System.out.println("你输入的单词是: " + word);
​
        System.out.print("请输入一行文本: ");
        // 消耗掉上一次输入遗留的换行符
        scanner.nextLine(); 
        String line = scanner.nextLine();
        System.out.println("你输入的文本是: " + line);
​
        scanner.close();
    }
}

3.3 判断是否有输入

  • hasNext():判断是否还有下一个输入项,如果有则返回 true,否则返回 false

  • hasNextInt():判断下一个输入项是否为整数,如果是则返回 true,否则返回 false

  • 类似的还有 hasNextDouble()hasNextBoolean() 等方法,用于判断下一个输入项是否为相应的数据类型。

示例代码

java

import java.util.Scanner;
​
public class CheckInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
​
        System.out.print("请输入一个整数: ");
        if (scanner.hasNextInt()) {
            int num = scanner.nextInt();
            System.out.println("你输入的整数是: " + num);
        } else {
            System.out.println("输入不是一个有效的整数。");
        }
​
        scanner.close();
    }
}
  1. 关闭 Scanner 对象

当使用完 Scanner 对象后,应该用 close() 方法关闭它,以释放相关资源。特别是当 Scanner 对象是基于文件或其他资源创建时,关闭操作尤为重要。示例如下:

java

import java.util.Scanner;
​
public class CloseScanner {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 使用 scanner 对象进行输入操作
        scanner.close();
    }
}

注意事项

  • next()nextLine() 的混用问题:当使用 next() 系列方法读取基本数据类型或字符串后,再使用 nextLine() 读取一行文本时,可能会出现问题。因为 next() 系列方法不会读取换行符,而 nextLine() 会读取换行符,所以可能会导致 nextLine() 读取到空行。解决方法是在使用 nextLine() 之前,先调用一次 nextLine() 来消耗掉遗留的换行符。

  • 资源管理:如果 Scanner 对象是基于文件或其他外部资源创建的,在使用完后一定要调用 close() 方法关闭,以避免资源泄漏。

通过 Scanner 类,Java 程序可以方便地与用户进行交互,获取用户输入的数据,从而实现更加灵活和实用的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值