Java如何读入字符串

在Java中,我们可以使用多种方式来读入字符串。下面将介绍三种常用的方法:使用Scanner类、使用BufferedReader类和使用System.in。

1. 使用Scanner类

Scanner类是Java中一个常用的用于读取用户输入的类。它提供了多种方法来读取不同类型的输入,包括字符串。

示例代码如下所示:

import java.util.Scanner;

public class ReadStringUsingScanner {
    public static void main(String[] args) {
        // 创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        
        // 读取字符串
        System.out.print("请输入字符串: ");
        String str = scanner.nextLine();
        
        // 打印输入的字符串
        System.out.println("您输入的字符串是: " + str);
        
        // 关闭Scanner对象
        scanner.close();
    }
}

这段代码首先创建了一个Scanner对象,并将其绑定到标准输入流(System.in)。接着使用nextLine()方法读取字符串,并将其保存到变量str中。最后打印输入的字符串。

2. 使用BufferedReader类

BufferedReader类是Java中另一个常用的读取用户输入的类。与Scanner类不同,BufferedReader类的读取方法更底层,可以更高效地读取大量输入。

示例代码如下所示:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ReadStringUsingBufferedReader {
    public static void main(String[] args) {
        // 创建BufferedReader对象
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        // 读取字符串
        try {
            System.out.print("请输入字符串: ");
            String str = reader.readLine();
            
            // 打印输入的字符串
            System.out.println("您输入的字符串是: " + str);
            
            // 关闭BufferedReader对象
            reader.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

这段代码首先创建了一个BufferedReader对象,并将其初始化为使用标准输入流(System.in)作为输入源。接着使用readLine()方法读取一行字符串,并将其保存到变量str中。最后打印输入的字符串。

3. 使用System.in

除了使用Scanner类和BufferedReader类,我们还可以直接使用System.in来读取字符串。这种方法相对较底层,需要使用字节数组来保存输入的内容。

示例代码如下所示:

import java.io.IOException;

public class ReadStringUsingSystemIn {
    public static void main(String[] args) {
        try {
            // 设置输入编码为UTF-8
            System.setIn(new java.io.FileInputStream(java.io.FileDescriptor.in));
            
            // 读取字符串
            System.out.print("请输入字符串: ");
            byte[] buffer = new byte[1024];
            int length = System.in.read(buffer);
            
            // 将字节数组转换为字符串
            String str = new String(buffer, 0, length).trim();
            
            // 打印输入的字符串
            System.out.println("您输入的字符串是: " + str);
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

这段代码首先将输入编码设置为UTF-8,然后使用System.in.read()方法从输入流中读取字节,并将其保存到字节数组buffer中。接着使用new String()方法将字节数组转换为字符串,并使用trim()方法去掉多余的空格。最后打印输入的字符串。

关系图

下面是三种读取字符串的方法的关系图:

erDiagram
    ReadStringUsingScanner ||--o{ Scanner
    ReadStringUsingBufferedReader ||--o{ BufferedReader
    ReadStringUsingSystemIn ||--o{ System.in

状态图

下面是一个读取字符串的状态图:

stateDiagram
    [*] --> 输入字符串
    输入字符串 --> 打印输入的字符串
    打印输入的字符串 --> [*]

以上就是在Java中读取字符串的三种常用方法。你可以根据具体的需求选择合适的方法来实现。希望本文对你有所帮助!