要在Java中读入字符串数组,你可以使用Scanner类、BufferedReader类或Files类等多种方式。这些方法各有优劣,适用于不同的场景。以下是详细的介绍:
使用Scanner类:适合从控制台或文件中逐行读取字符串,并将其存储在数组中。使用BufferedReader类:适合从较大的文本文件中读取数据,具有更高的性能。使用Files类:适合从文件中一次性读取所有行,并将其存储在List中,再转换为数组。下面详细介绍使用Scanner类读取字符串数组的方法。
一、使用Scanner类
1. 从控制台读取字符串数组
使用Scanner类可以轻松从控制台读取输入的字符串数组。以下是一个简单的示例:
import java.util.Scanner;
public class ReadStringArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the number of strings:");
int n = scanner.nextInt();
scanner.nextLine(); // consume the remaining newline
String[] strings = new String[n];
System.out.println("Enter the strings:");
for (int i = 0; i < n; i++) {
strings[i] = scanner.nextLine();
}
System.out.println("You entered:");
for (String str : strings) {
System.out.println(str);
}
scanner.close();
}
}
这个示例首先提示用户输入字符串的数量,然后逐行读取用户输入的字符串并存储到数组中,最后输出数组中的字符串。
2. 从文件读取字符串数组
使用Scanner类也可以从文件中逐行读取字符串,并将其存储在数组中。以下是一个示例:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class ReadStringArrayFromFile {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(new File("input.txt"));
ArrayList<String> stringList = new ArrayList<>();
while (scanner.hasNextLine()) {
stringList.add(scanner.nextLine());
}
String[] strings = stringList.toArray(new String[0]);
System.out.println("Strings read from file:");
for (String str : strings) {
System.out.println(str);
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found: " + e.getMessage());
}
}
}
这个示例使用Scanner类从文件中读取所有行,并将其存储在ArrayList中,然后将ArrayList转换为数组。
二、使用BufferedReader类
BufferedReader类适合从较大的文本文件中读取数据,具有更高的性能。以下是一个示例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ReadStringArrayWithBufferedReader {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
ArrayList<String> stringList = new ArrayList<>();
String line;
while ((line = br.readLine()) != null) {
stringList.add(line);
}
String[] strings = stringList.toArray(new String[0]);
System.out.println("Strings read from file:");
for (String str : strings) {
System.out.println(str);
}
} catch (IOException e) {
System.out.println("Error reading file: " + e.getMessage());
}
}
}
在这个示例中,BufferedReader逐行读取文件内容,并将每行存储到ArrayList中,然后将ArrayList转换为数组。
三、使用Files类
Files类适合从文件中一次性读取所有行,并将其存储在List中,再转换为数组。以下是一个示例:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class ReadStringArrayWithFiles {
public static void main(String[] args) {
try {
List<String> stringList = Files.readAllLines(Paths.get("input.txt"));
String[] strings = stringList.toArray(new String[0]);
System.out.println("Strings read from file:");
for (String str : strings) {
System.out.println(str);
}
} catch (IOException e) {
System.out.println("Error reading file: " + e.getMessage());
}
}
}
在这个示例中,Files.readAllLines方法一次性读取文件中的所有行,并将其存储在List中,然后将List转换为数组。
结论
上述三种方法各有优劣,使用Scanner类适合从控制台或小文件中逐行读取字符串,使用BufferedReader类适合从较大的文本文件中读取数据,使用Files类适合一次性读取所有行的情况。选择适合的方式可以有效提高程序的效率和可维护性。
相关问答FAQs:
Q: 如何在Java中读入字符串数组?
A: 以下是在Java中读入字符串数组的几种方法:
Q: 我应该如何在Java中将键盘输入的字符串保存到数组中?
A: 你可以使用Scanner类来读取键盘输入的字符串,并将它们保存到数组中。首先,创建一个Scanner对象来接收键盘输入,然后使用循环和数组索引来逐个读取输入的字符串并存储到数组中。
Q: 如何从文件中读取字符串并将它们保存到数组中?
A: 你可以使用BufferedReader类来读取文件中的字符串,并将它们保存到数组中。首先,创建一个BufferedReader对象来读取文件内容,然后使用循环和数组索引来逐行读取文件中的字符串并存储到数组中。
Q: 如何从数据库中读取字符串并将它们保存到数组中?
A: 你可以使用JDBC(Java Database Connectivity)来连接数据库并读取其中的字符串数据。首先,建立与数据库的连接,然后编写SQL查询语句来获取所需的字符串数据。使用ResultSet对象来迭代查询结果,并将每个字符串存储到数组中。最后,关闭数据库连接。
原创文章,作者:Edit2,如若转载,请注明出处:https://docs.pingcode.com/baike/196427