Java Scanner 类
                           
天天向上
发布: 2025-03-02 10:42:32

原创
747 人浏览过

Scanner 类是 Java 中用于获取用户输入的常用工具类,它位于 java.util 包中。Scanner 可以读取各种类型的输入,包括从键盘、文件、字符串等源获取数据。它提供了多种方法来读取基本数据类型(如 intdouble 等)和字符串。

1. Scanner 类的基本使用

1.1 创建 Scanner 对象

要使用 Scanner,首先需要创建一个 Scanner 对象,并将其与输入源(如 System.in,即键盘输入)关联起来。

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        // 创建 Scanner 对象,读取键盘输入
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个整数:");
        int number = scanner.nextInt();  // 读取整数
        System.out.println("你输入的整数是:" + number);

        System.out.print("请输入一个浮点数:");
        double floatingNumber = scanner.nextDouble();  // 读取浮点数
        System.out.println("你输入的浮点数是:" + floatingNumber);

        System.out.print("请输入一段文字:");
        String text = scanner.next();  // 读取字符串(以空格为分隔符)
        System.out.println("你输入的字符串是:" + text);

        // 关闭 scanner 对象,释放资源
        scanner.close();
    }
}

2. Scanner 常用方法

Scanner 提供了多种方法来获取不同类型的输入数据。以下是一些常用的方法:

2.1 nextInt()

读取下一个整数。

int num = scanner.nextInt();

2.2 nextDouble()

读取下一个浮点数。

double num = scanner.nextDouble();

2.3 nextLine()

读取一行字符串,直到遇到换行符为止。

String line = scanner.nextLine();

2.4 next()

读取一个完整的单词(以空格或换行符为分隔符)。

String word = scanner.next();

2.5 nextBoolean()

读取一个布尔值。

boolean flag = scanner.nextBoolean();

2.6 hasNext() 和 hasNextInt()

检查是否还有下一个元素,常用于循环中。

  • hasNext():检查是否有下一个元素(可以是任何类型)。
  • hasNextInt():检查下一个元素是否为整数。
if (scanner.hasNextInt()) {
    int num = scanner.nextInt();
    System.out.println("输入的是整数:" + num);
}

2.7 close()

关闭 Scanner 对象,释放资源。注意,关闭 System.in 会关闭整个输入流,所以通常不推荐关闭 System.in,除非应用结束。

scanner.close();

3. 使用 Scanner 读取多行输入

Scanner 可以读取多行输入,方法是使用 nextLine() 来读取每一行。例如,读取用户输入的多行文本,直到输入 “exit” 为止。

import java.util.Scanner;

public class MultiLineInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line;

        System.out.println("请输入多行文本,输入 'exit' 来结束:");

        while (true) {
            line = scanner.nextLine();
            if (line.equalsIgnoreCase("exit")) {
                break;
            }
            System.out.println("你输入的行是:" + line);
        }

        scanner.close();
    }
}

4. 使用 Scanner 读取文件

Scanner 也可以用来读取文件中的内容。你可以通过传入一个文件对象或文件路径来创建 Scanner 对象,然后读取文件的内容。

import java.util.Scanner;
import java.io.File;
import java.io.IOException;

public class FileScannerExample {
    public static void main(String[] args) throws IOException {
        // 创建 File 对象
        File file = new File("example.txt");

        // 创建 Scanner 对象读取文件内容
        Scanner scanner = new Scanner(file);

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println(line);
        }

        // 关闭 scanner 对象
        scanner.close();
    }
}

5. 示例:综合使用 Scanner

import java.util.Scanner;

public class ScannerComprehensiveExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入姓名
        System.out.print("请输入姓名:");
        String name = scanner.nextLine();

        // 输入年龄
        System.out.print("请输入年龄:");
        int age = scanner.nextInt();

        // 输入薪水
        System.out.print("请输入薪水:");
        double salary = scanner.nextDouble();

        // 输出输入的信息
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("薪水:" + salary);

        scanner.close();
    }
}

6. Scanner 注意事项

  • next() 只读取一个单词,遇到空格、换行符等分隔符时会停止。
  • nextLine() 读取整个一行,直到遇到换行符为止。
  • 在读取 nextInt()nextDouble() 后,通常会剩下一个换行符,如果你后续使用 nextLine(),可能会遇到读取不到预期数据的问题。解决方法是调用一次 nextLine() 来消耗掉换行符。
Scanner scanner = new Scanner(System.in);

System.out.print("请输入整数:");
int number = scanner.nextInt();

// 解决换行符问题
scanner.nextLine(); // 消耗掉之前输入的换行符

System.out.print("请输入一行文本:");
String text = scanner.nextLine();
System.out.println("你输入的文本是:" + text);

scanner.close();

总结

  • Scanner 类是一个非常强大且灵活的输入工具,可以读取各种类型的数据,如整数、浮点数、布尔值和字符串。
  • 它可以从标准输入(键盘)、文件或其他输入源中读取数据。
  • 使用 Scanner 时需要记得关闭它以释放资源,但在读取 System.in 时通常不建议关闭。

通过这些基本操作,您可以轻松实现用户输入、文件读取等功能。更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *