タイトルが明確かどうかはわかりませんが、基本的には、ファイルから 1 行のテキストを読み取り、それを 8 つの異なる文字列変数に分割する必要があります。各行には、同じ順序 (タイトル、著者、価格など) で同じ 8 つのチャンクがあります。したがって、テキストの各行に対して、最終的に 8 つの文字列を作成したいと考えています。
最初の問題は、行の最後の 2 つのフィールドが存在する場合と存在しない場合があることです。そのため、stringTokenizer.hasMoreTokens を使用して何かを行う必要があります。そうしないと、フィールド 7 と 8 が存在しないときに乱雑に終了します。
理想的には for ループの 1 回で実行したいのですが、8 つ (または 6 つ) の文字列すべてを正しく埋めることができるように、フィールドの順序がどうなるかをそのループに伝える方法がわかりません。ネストされた 8 つの if ステートメントを使用するより良い方法があることを教えてください。
編集: String.split ソリューションは間違いなくその一部であるように思われるので、stringTokenizer の代わりにそれを使用します。ただし、個々の文字列をコンストラクターに供給する最良の方法はまだわかりません。最善の方法は、クラスに配列を期待させてから、コンストラクターで次のようにすることです。
line[1] = isbn;
line[2] = title;