java编写一个程序,从文本文件中读取单词,并将所有不重复的单词按升序显示。文本文件被作为命令行参数传递
时间: 2024-11-24 09:42:56 浏览: 8
c语言中怎样把文本文件中的一列数导入程序中
5星 · 资源好评率100%
要编写一个Java程序,从命令行参数的文本文件中读取单词并排序,你可以按照以下步骤操作:
1. 首先,获取命令行参数,这是通过`args`数组获得的。假设第一个参数就是文本文件路径。
```java
public class WordSorter {
public static void main(String[] args) {
String filePath = args[0];
try {
// 将后续操作放在try-catch块中,以便处理可能出现的异常
} catch (Exception e) {
System.out.println("Invalid file path or error reading the file.");
e.printStackTrace();
return;
}
}
}
```
2. 使用`BufferedReader`读取文件内容,并逐行分割成单词。忽略标点符号和换行符。
```java
List<String> words = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
// 去除非字母字符并拆分单词
String[] wordArray = line.replaceAll("\\W", "").toLowerCase().split("\\s+");
for (String word : wordArray) {
words.add(word);
}
}
} catch (IOException e) {
System.err.println("Error reading the file: " + e.getMessage());
}
```
3. 使用`HashSet`去除重复单词,因为HashSet不允许重复元素。
```java
Set<String> uniqueWords = new HashSet<>(words);
```
4. 最后,将不重复的单词按升序排列,并打印出来。
```java
List<String> sortedWords = new ArrayList<>(uniqueWords);
sortedWords.sort();
for (String word : sortedWords) {
System.out.println(word);
}
// 输出结果
```
完整代码如下:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class WordSorter {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Please provide a text file as a command-line argument.");
return;
}
String filePath = args[0];
try {
List<String> words = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] wordArray = line.replaceAll("\\W", "").toLowerCase().split("\\s+");
words.addAll(Arrays.asList(wordArray));
}
Set<String> uniqueWords = new HashSet<>(words);
List<String> sortedWords = new ArrayList<>(uniqueWords);
sortedWords.sort();
for (String word : sortedWords) {
System.out.println(word);
}
} catch (IOException e) {
System.err.println("Error reading the file: " + e.getMessage());
}
} catch (Exception e) {
System.out.println("Invalid file path or error reading the file.");
e.printStackTrace();
}
}
}
```
阅读全文