![](/img/trans.png)
[英]Why System.out.println prints the elements of an arraylist and not the hashcode of the object?
[英]Why is it not possible to call the scanEverything method twice? It only prints out the arrayList once, and the second println shows an empty list
我在与其他文件相同的文件夹中有一个test1.txt文件。 例如,它有以下数据: Hello Hello Hello 我的代码只打印一次。 我调用了该方法两次,但第二个 println 显示了一个空的数组列表。
跑:
[hello, hello, hello]
[]
BUILD SUCCESSFUL (total time: 0 seconds)
代码:
import java.io.*;
import java.util.*;
public class Text {
public static void main(String[] args) throws FileNotFoundException {
Scanner keyboard = new Scanner(System.in);
String firstFileName = "test1.txt";
Scanner scan1 = new Scanner(new File(firstFileName));
System.out.println(scanEverything(scan1));
System.out.println(scanEverything(scan1));
}
public static ArrayList<String> scanEverything(Scanner scan) {
ArrayList<String> text = new ArrayList<>();
while (scan.hasNext()) {
String nextWord = scan.next().toLowerCase();
text.add(nextWord);
}
Collections.sort(text);
return text;
}
在您调用 scanEverything 之后,Scanner 被“消耗”,即scan.hasNext()
将返回 false。
如果你想再次扫描文件,你必须重新创建扫描器(详细信息请参见此处: Java Scanner "rewind" )
您定义为“scan1”的扫描器在第一次函数调用后被消耗,您必须使用不同的扫描器或关闭第一个扫描器“scan1”并再次启动它。
例如。
调用函数scanEverything 后使用以下几行
scan1.close();
scan1 = new Scanner(new File(firstFileName));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.