gpt4 book ai didi

java - Java 扫描器异常

转载 作者:行者123 更新时间:2023-12-01 21:19:14 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,在其中获取文本文件并将其复制到另一个文件。在另一个文件中,我希望第一行有一个单词,第二行有两个单词,第三行有三个单词,依此类推。

但是,我在使用 Scanner 类时遇到了一些问题。在下面的程序中,我不断收到第 14 行的 NoSuchElementException 异常。我认为这是因为我在 while 循环或其他内容中关闭了扫描仪,但即使我省略了“in.close()”,我仍然收到相同的错误。

有人可以帮我解决这个问题吗?

提前致谢。

import java.io.*;
import java.util.*;

public class WordPyramid {
public static void main(String[] args) throws FileNotFoundException {
File inputFile = new File(args[0]);
Scanner in = new Scanner(inputFile);
PrintWriter out = new PrintWriter(args[1]);
int s = 1;
int i = 0;
while (in.hasNext()) {
if (s >= i) {
for (i = 1; i <= s; i++) {
out.print(in.next());
out.print(" ");
}
out.println("");
s++;
}
}
in.close();
out.close();
}
}

最佳答案

一个NoSuchElementException当没有 next() 时抛出元素。当您检查文件 hasNext() 是否在金字塔每一层的开始处,在调用 next() 之前也需要检查一下在 for环形。您的异常在 for 中抛出循环,因为金字塔的下一层可能需要比文件中剩余的单词数量更多的单词,从而导致 next()尝试获取不存在的元素。

要修复它,请将您的内部包裹起来 for循环 if(in.hasNext()) .

关于java - Java 扫描器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39416110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com