質問: new GetPrice(cp); pp.start(); //スレッドを実行可能状態にする gp.start(); //スレッドを実行可能状態にする } }
回答: Javaには標準でCSVを読み書きするライブラリが用意されていません。実現したいことに書いてある**CSVFile**というのが一体何を示しているのかわからないと何をしたいのかがわかりません。ソースコードにはCSVFileというのが一つも無いため、推測が全くできません。 CSVでフォーマットされたファイルを読み込むことを表すとしても、多くの問題があります。 * CSVの読み書きする標準ライブラリがないため、CSVのライブラリを用意するか、CSVを読み込むクラスを独自に作成する必要があります。CSVのライブラリは数多く存在し、どれを採用するかで書き方も変わってきます。 * CSVと単純に標準規格(RFC4180)に準拠している場合もあれば、独自の場合もあります。改行はCR+LFなのかLFのみなのか?`,`が含まれるフィールドは`"`で囲むのか?では、`"`が含まれるフィールドは`""`と二つ並べることでエスケープするのか?`\`でのエスケープはできるのか?そもそも文字コードはUTF-8かWindows-31J(日本語環境Excelの標準)か?全角カンマ","もフィールド区切りと見なすか?フィールドに改行を含めることができるか?など、多数の実装があります。どこまで対応するかによって、ライブラリの選択や、オプション等が変わってきます。 * CSVのフィールドはどのように書き込まれるのでしょうか?例えば、最初のレコードはヘッダであり、無視すべきかも知れません。逆に、最初レコードにすべて価格が全て載っているかも知れません。各レコードは「製品,価格,税率」かも知れません。また、価格の単位も1円単位とは限らず、千円単位だったり、`3.14`を3円14銭として計算すべきかも知れません。`千二百五十二円`と漢数字で書いてある可能性すら有ります。どのようにレコードがあって、どの部分を取り出すのかわからなければ、何を実装すべきかがわかりません。 * サイドに、そのCSVファイルはどこにあるのでしょうか?ファイルのパスをどうやって決めるのかがわからなければ、ファイルを読み込むことすらできません。 以上のことから、1.を解決するには、まず、**詳細を確認することです**。CSVFileとは何を表すのか、CSVファイルを読み込むことだとしても、CSVファイルはどんな形式でどのように価格が書き込まれているのか、また、そのファイルはどうやって見つければ良いのか、そういった点がわからなければどうしようもありません。それがわかって、次に、CSVライブラリの選定、または、独自にCSV読み込みクラスを作るのかが決まります。