我试图了解扫描仪如何工作。因此,我只能扫描文本文档,并且仅通过某些单词进行迭代,但这没有用,它只是打印了所有内容。因此,我用一个只打印数字的循环代替了它,但是它甚至从未打印过,并且即使我没有为此编写打印语句,它也打印了文本文档中的所有单词。 扫描仪会自动打印所有内容吗?为什么也跳过了我的for循环?
Scanner read = new Scanner(new File("Test.txt"));
read.close();
for(int i = 0; i < 5; i++) {
System.out.println(i);
}
答案 0 :(得分:0)
请为此修改您的代码:
通用代码:
Scanner reader = new Scanner(new File("Test.txt"));
while (reader.hasNext()){
String str = reader.nextLine();
System.out.println(str);
}
reader.close();
用于读取整数:
Scanner reader = new Scanner(new File("Test.txt"));
while (reader.hasNext()){
int i = reader.nextInt();
System.out.println(i);
}
reader.close();
将Scanner与文本文件一起使用时,其行为有点像 具有集合的迭代器。 hasNext方法检测到结束 文件,因此可以使用简单的while循环来读取文件 数据。
答案 1 :(得分:0)
Scanner
并不是一个很好的类,因为在读取时必须确定一个人要读取哪种令牌,并且最好处理所有错误。
它顺序读取文件作为令牌,默认用空格分隔,令牌可以是String/int/...
。
Scanner in = new Scanner(new File("Test.txt"));
if (in.hasNextLine()) {
String line = in.nextLine();
}
if (in.hasNextInt()) {
int n = in.nextInt();
if (in.hasNext()) {
String s = in.next();
}
if (in.hasNextLine()) {
in.nextLine();
}
}
int a = in.nextInt(); // Unsafe - are there digits here?
int b = in.nextInt();
in.close();
对于文件:
My header line
42 fine secret
97 98
一个人很容易犯一个错误。