我不知道为什么它不会工作。我已经检查过两次和三次检查FileWriter中的文件是否有文本(之前在另一个程序中由另一个PrintWriter输入)但是while语句似乎没有运行。注释掉的行是我正在运行的各种测试,试图弄清楚发生了什么。我想要解决的是让它遍历数组并向所有人添加组ID。如果有人知道该怎么做,我们将不胜感激。我会提前为任何格式错误道歉,任何关于如何更容易帮助的评论也将非常感激。
public static void updateWinners(Person[] Players, int n)
throws FileNotFoundException {
// n is 2 or 4 depending on round
File fileS = new File(
"C:\\Users\\Patrick\\Desktop\\New folder\\FileWriter\\Win");
File fileP = new File(
"C:\\Users\\Patrick\\Desktop\\New folder\\Bracket\\Win");
Scanner fs = new Scanner(fileS);
PrintWriter writer = new PrintWriter(fileP);
//int q=0;
while (fs.hasNextLine()) {
//System.out.println(Players[q].toString());
for (int i = 0; i < Players.length; i++) {
if (fs.nextLine().equals(Players[i].toString())) {
Players[i].addGroup(alpha[i / n]);
System.out.println(Players[i].toString());
writer.println(Players[i].toString());
}
}
//q++;
}
writer.close();
fs.close();
}
答案 0 :(得分:2)
这样做,
while (fs.hasNextLine()) {
String s = fs.nextLine();
//System.out.println(Players[q].toString());
for (int i = 0; i < Players.length; i++) {
if (s.equals(Players[i].toString())) {
Players[i].addGroup(alpha[i / n]);
System.out.println(Players[i].toString());
writer.println(Players[i].toString());
}
}
//q++;
}
说明:
每次在玩家循环中调用fs.nextLine()
时。它从文件中读取一个新行。因此,在完成所有播放器之前,将读取文件的所有行。
当您尝试阅读并且文件中没有其他数据时,扫描程序会抛出异常。
抛出:
NoSuchElementException - 如果未找到任何行