我正在做一个作业,我需要用扫描仪读取文件中的文本。然后将其写入生成字符串数组的循环中。并使用数组。方法按字母顺序对数组进行排序。之后,它将数组打印到输出文件中。还必须在命令行上显示这一点。输入文件上的句子是“是是还是不存在--这就是问题”,它必须逐字逐句地显示在新行上。到目前为止,这就是我所拥有的,但是排序方法不是排序,而是读取数组?
public static void main(String[] args) throws IOException {
try {
try (Scanner input = new Scanner(new File("input.txt"))) {
while (input.hasNextLine()) {
String[] str = {input.next().toString()};
Arrays.sort(str);
for (String stringArray : str) {
System.out.println(Arrays.toString(str));
}
}
}
} catch (Exception ex) {
}
}万一我不完全明白我在问什么,这是关于整个程序最终要做什么的说明。现在我只是想让排序方法起作用。
创建一个字符串数组来存储从输入文件中读取的单词。您可以假设输入文件将包含10000字或更少。
使用扫描仪读取输入文件。在循环的头中,调用Scanner对象上的hasNext()方法。只要文件有更多的字符串,并且数组还没有被填充,就继续执行循环。
在循环的主体中,调用Scanner对象上的next()方法。此方法返回一个字符串。将其转换为小写(这里有一个字符串方法--参见字符串的API ),然后将小写单词分配给字符串数组的一个元素。
循环读取完文件后,调用方法Arrays.sort(…),将字符串数组作为参数传递给此方法。
使用PrintWriter将排序数组的内容写入另一个文件。您需要使用一个循环来编写数组的元素。在这个循环中,编写一些代码以确保同一个单词不会多次写入输出文件。使用变量保存写入文件的最后一个单词。在你写下一个单词之前,把它和最后一个单词比较一下,只有当它不同的时候才写它。
发布于 2016-02-24 16:48:21
如果认为这是您所要尝试的(但是如果文件很大,请尝试使用一些排序的集合):
public static void main(String[] args) throws IOException {
try (Scanner input = new Scanner(new File("input.txt"))) {
List<String> inputText = new ArrayList();
while (input.hasNextLine()) {
inputText.add(input.nextLine());
}
Arrays.sort(inputText);
for (String str : inputText) {
System.out.println(str);
}
}}
发布于 2016-02-24 16:49:23
因为你读了一行,把它排序,然后再重写一遍!我更喜欢用BufferedReader阅读并添加到ArrayList中。
FileReader fileReader = new FileReader("input.txt");
List<String> lines;
try (BufferedReader bufferedReader = new BufferedReader(fileReader)) {
lines = new ArrayList<>();
String line;
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
}
Collections.sort(lines);您可以添加未知数量的项,而不需要处理数组大小。
如果您确实希望使用数组,请将这一行添加到代码的末尾:
String[] array = lines.toArray(new String[lines.size()]);谢谢Boris the Spider的提示。
https://stackoverflow.com/questions/35607794
复制相似问题