私は今年後半に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にコピーして貼り付けたところ、実行されませんでした。「BufferedReaderf=new BufferedReader ...」の行にFileNotFoundExceptionが発生しました。これは「test.out」が原因だと思いますが、何を入力すればよいかわかりません。これを修正するにはどうすればよいですか?
さらに、USACOは、これが入力されたテキストを解析するための最も効率的な方法であると述べました。これは本当ですか?のように、これは入力されたテキストを取得するための本当に最も効率的な方法です。私はScannerクラスのような他の方法に精通していますが、USACOは、BufferedReader、PrintWriterなどを使用することがそれを行うための最良の方法であると主張しています。