私は現在ArrayList
とPrintWriter
を使用することを学んでいます。私の教授は、複数のファイルを使用してファイルを分割する必要がある場所を割り当てました。PrintWriter
ArrayList
。だから私はこのような何かに見えるためのループでPrintwriter
秒を初期化:writers
はArrayList<PrintWriter>
とfilePattern
あるPrintWritersと.get()メソッドのArrayList
for (int i=1; i<=n; i++) {
try {
this.writers.add(new PrintWriter(new File(filePattern + i)));
}
catch (java.io.IOException e) {
System.out.println("File " + i + " not found.");
}
}
がソースです。 しかし私のwrite
メソッドでは、私は実際に物事を書くためにこれらのPrintWriter
を呼び出す必要があります。 int currentFile
を使用してファイルを分割して回転しますが、名前を付けていないときにはにあるPrintWriter
の使い方が正確ではありません。次のように "get"メソッドを使用できますか? :
public void write (String s) throws IOException {
if (this.writers.size() > 0) {
PrintWriter p = this.writers.get(currentFile);
p.println(s);
if (this.currentFile == (this.writers.size()-1)) {
this.currentFile = 0;
}
else {
this.currentFile++;
}
}
else {
System.out.println("No Writers currently exist");
}
}
これは機能しませんか?もしそうでなければ、別の方法がありますか?
ええ、私はそれらを使用することに慣れていますが、何らかの理由で彼は最後の課題のように指定していないので、私は彼がこの1つのために使用しないようにしたいと思うかもしれません。私は知らないが、私はチャンスを取ることを望んでいない。 .get()はうまくいくはずですか?私の例のように、実際には正しく機能するはずですか? – Azmera
@Azmeraリストにオブジェクト参照をいくつか入れ、インデックスを介してこれらのオブジェクト参照にアクセスする場合は、明示的なgetメンバメソッドまたはオーバーロードされた演算子[](まったく同じ "構文砂糖")を使用できます。 APIをご覧ください:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html – Matthias