基本的な考え方は、ファイルリーダーオブジェクトを作成することです
FileReader fr = new FileReader('file.txt');
次に、各行を1行ずつ解析し、内部データストレージ(Array、HashMap)に保存します。
あなたが持っている例のwhileループはまさにこれを行います。クラスはあなたFileReader
に代わって行末を処理し、null
読み取る行がなくなると戻ります。whileループ内で行う必要があるのは、各行を解析し、データのさまざまなビット(コース名、価格など)を互いに分離することです。
編集:行を解析するには、次のようにします。whileループの内容は、メニューファイルのフォーマット方法によって異なります。以下は、メニューファイルに価格とコース名が(この順序で)各行にコンマで区切られて含まれていることを前提としています。
12.95$,Penne ala Arabiata
8.15$,Fish Soup
これを行う場合、価格にコンマを使用できないことに注意してください。もちろん、データフィールド間の区切り文字として、コンマの代わりにセミコロンを使用することもできます。もちろん、データフィールドの数もあなた次第です。
String line = "";
// read lines from file
while ((line = fr.readLine()) != null) {
// parse each line
tokens = line.split(",");
String price = tokens[0];
String courseName = tokens[1];
// extract all other information
}
最終的なコードでは、データフィールドをファイルから抽出するだけでなく、何らかの構造に保存する必要があります。もう1つの注意点は、ドル記号のため、価格は数値ではなく文字列であるということです。価格を使用して計算を行う場合は、もちろん、parseFloat()
またはを使用して数値に変換する必要がありますparseDouble()
。
もちろん、csv(コンマ区切り値)形式を使用する場合は、パーサーを自分で作成するのではなく、csvライブラリを使用して解析を行うことをお勧めします。
http://opencsv.sourceforge.net/