• ベストアンサー

Vectorを引数としたメソッド

今回、初めてVectorを使ったプログラミングをしているのですが、どうしてもエラーの原因がわからないので質問します。ベクターと整数を引数としたメソッドを作っているのですが、このメソッドの bwEmployeeInfo.write(vPassedVector.get(nCounterFor)); で「Cannot Resolve Symbol」というメッセージが出ています。何か思い当たることがあれば教えていただけるとうれしいです。念のためエラーメッセージを最後につけておきます。 よろしくお願いします。 public void writeEmployees(Vector vPassedVector, int nPassedNumber) { BufferedWriter bwEmployeeInfo = null; if (vPassedVector.get(0) != null) { //Open a.dat File(o) try { bwEmployeeInfo = new BufferedWriter(new FileWriter("c:/a.dat")); ; System.out.println("error opening output file"); //Print detail line to a.dat file for (int nCounterFor = 0; nCounterFor < nPassedNumber; nCounterFor ++) { //ここでエラーがおきています。 bwEmployeeInfo.write(vPassedVector.get(nCounterFor)); bwEmployeeInfo.newLine(); } //end for bwEmployeeInfo.flush(); } //end try catch (IOException ioe) { System.out.println("error writing output file"); } } //end if } //end method エラーメッセージは以下。 cannot resolve symbol symbol : method write (java.lang.Object) location: class java.io.BuffredWriter bwEmployeeInfo.write(vPassedVector.get(nCounter));

質問者が選んだベストアンサー

  • ベストアンサー
noname#2875
noname#2875
回答No.1

Vector#getの戻りはObject。 でもwriteの引数は以下。 void write(char[] cbuf, int off, int len) 文字の配列の一部を書き込みます。 void write(int c) 単一の文字を書き込みます。 void write(String s, int off, int len) String の一部を書き込みます。 void write(char[] cbuf) 文字の配列を書き込みます。 void write(String str) 文字列を書き込みます。 void write(String str, int off, int len) 文字列の一部を書き込みます。 Vectorの中身について書いてありませんが、 たぶん、Vectorの各要素がStringなのに、なぜ? ということでしょうか。 スーパークラスからサブクラスへのキャストは 明示しないキャストになりませんから 型がちがうよ、といわれると思います。 bwEmployeeInfo.write((String)(vPassedVector.get(nCounterFor))); で試してみたらどうでしょうか。 要素がStringでなければ実行時に例外がでますが。

fuyu
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 今回は、nobi2000さんがおっしゃるとおりString型でしたので、教えていただいた方法で無事にとおりました。回答ありがとうございました。

その他の回答 (1)

  • mu_nya
  • ベストアンサー率50% (2/4)
回答No.2

Vectorから取り出した値 vPassedVector.get(nCounterFor) の型を明示的に記述する必要があります。 これを「キャスト」といいます。 bwEmployeeInfo.write メソッドの引数の型が何であるかは情報不足でわかりませんが、例えば引数が String 型であるのであれば bwEmployeeInfo.write((String)(vPassedVector.get(nCounterFor))); とします。

fuyu
質問者

お礼

回答ありがとうございました。おかげさまで無事に解決しました。

関連するQ&A