我将在今年晚些时候参加 USACO,我很可能会使用 Java。但是,我还没有彻底介绍文件 I/O。USACO 坚持我们使用这个 BufferReader、PrintWriter 和 StringTokenizer 组合来解析输入的文本。这是他们展示的代码:
import java.io.*;
import java.util.*;
class test {
public static void main (String [] args) throws IOException {
// Use BufferedReader rather than RandomAccessFile; it's much faster
BufferedReader f = new BufferedReader(new FileReader("test.in"));
// input file name goes above
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out")));
// Use StringTokenizer vs. readLine/split -- lots faster
StringTokenizer st = new StringTokenizer(f.readLine());
// Get line, break into tokens
int i1 = Integer.parseInt(st.nextToken()); // first integer
int i2 = Integer.parseInt(st.nextToken()); // second integer
out.println(i1+i2); // output result
out.close(); // close the output file
System.exit(0); // don't omit this!
}
}
但是,当我将代码复制/粘贴到 Netbeans 中时,它没有运行。它在“BufferedReader f = new BufferedReader ...”行给出了 FileNotFoundException,我想这是因为“test.out”,但我不知道该放什么。我该如何解决?
此外,USACO 表示这是解析输入文本的最有效方式。这是真的?例如,这真的是检索输入文本的最有效方法吗?我熟悉 Scanner 类等其他方法,但 USACO 坚持认为使用 BufferedReader、PrintWriter 等是最好的方法。