2017-10-15 13 views
1

私はJavaプログラムを作ろうとしています。これは価格に応じてさまざまなタイプの自転車を並べ替えます。これには、マウンテンバイクとレーシングバイクの2種類のバイクのファイルがあります。どちらも緑色でも青色でも構いません。それは次の形式になります。文字列をJavaでスキャンした後にファイルに保存する方法は?

Blue Racing: 
Price: 300 
Topspeed: 50 
Green Mountain: 
price: 400 
Topspeed: 30 
Blue Mountain: 
Price: 150 
Topspeed: 20 
Green Racing: 
Topspeed: 50 
price: 750 

は、これらのバイクを並べ替えています、私は、サブクラス「RaceBike」​​とサブクラス「マウンテン」で、親クラス「バイク」を作りました。このクラスにはスキャン方法があります。このメソッドは、自転車の種類をスキャンし、スキャンする自転車の種類に応じて、サブクラスの1つのスキャン方法を呼び出します。

スキャナ方法のすべては、このように見ている:

public static Bike scanner(Scanner scan); 

しかし、できるだけ早く例えば、「ブルー・レーシングは、」親クラスでスキャンされ、同様に、これらの言葉はでもうaccesedすることはできませんスキャナはサブクラスのスキャナメソッドにありますが、これは新しいBikeの色を決定するために必要です。

私の質問は、ファイルをスキャンした後も、どうやってそのファイルにアクセスできますか?

私の大学の規則のため、残念ながら、私はコードを表示することはできません。しかし、私はそれをもう少し明確にするためにいくつかの擬似コードを書くことができます:色はもうRacingBikeスキャナ方式でaccesedすることができないとして、上記の例のようにそれを実装する

public static Bike scanner(Scanner scan){ 
    scan first word; 
    scan second word; 
    if second word equals racing 
     return racingbike.scanner(scan) 
    else 
     return mountainbike.scanner(scan) 
} 

public static RacingBike scanner(Scanner scan){ 
    String color = scan first word //The color 
    scan second word //kind of bike 
    scan third word 
    int price = scan first number // price 
    return a new Racingbike, with attributes color and price 
} 

は、不可能です。だから私はまだそれにアクセスできる方法を見つけなければならない。

メソッドの戻り値の型と引数を変更することはできません。

ありがとうございました。

答えて

1

あなたは値のユーザーに値を取得するそれカップル方法ので、あなたは、ファクトリメソッド(またはコンストラクタ)にスキャナを渡すべきではありません。

ファイルを解析し、ファイル内の値の順序とタイプを処理するコードを記述します。ファイルから解析された文字列とintを使用するものからは遠ざけてください。

Stringsとints(場合によってはenum)をコンストラクタに渡すことで、テストがはるかに簡単になり、多くの単体テストを書く必要があります。

+0

これは実際に私がやっていることです(私があなたが何を意味するのか理解していれば):例えば、私がする価格を得るために:int price = scan.nextInt()。私はこれがはっきりしていると思ったが、今私の元の質問でそれを編集する。 –

+0

@ JasonMacvilleいいえ、あなたは(私は*コンストラクタ*の代わりに*ファクトリメソッド*と言っていました)。このようにしましょう:RacingBikeとScannerの両方を使用/インポートするクラスはありません。 – Bohemian

関連する問題