2017-10-15 81 views
1

我正在嘗試製作一個Java程序,它根據價格對不同類型的自行車進行排序。爲此,我有兩種不同類型的自行車:山地自行車和賽車。他們都可以是綠色或藍色。它具有以下格式:如何在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」和子類「山地車」。這個班有一個掃描方法。該方法掃描自行車的類型並根據掃描自行車的類型調用其中一個子類的掃描方法。

所有的掃描方法必須是這樣的:

public static Bike scanner(Scanner scan); 

然而,只要,例如,「藍色賽車」在父類掃描的,這話不能再由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 
} 

像上面的例子實施是不可能的,因爲顏色不能在RacingBike掃描方法accesed了。所以我必須找到一種方法來繼續訪問它。

我不能改變方法的返回類型和參數。

謝謝。

回答

1

你不應該通過掃描儀的工廠方法(或構造函數),因爲它情侶方式你得到的值,值的用戶

編寫代碼來解析文件並處理文件中值的順序和類型。遠離任何使用從文件中解析出的字符串和整數的地方。

通過將字符串和整數(可能枚舉)傳遞給構造函數,可以使測試變得更容易,並且應該編寫大量的單元測試。

+0

這實際上就是我在做的事情(如果我明白你的意思):例如,要得到我要做的價格:int price = scan.nextInt()。等我認爲這很清楚,但我現在將在我原來的問題中編輯它。 –

+0

@JasonMacville不,你不是(我打算說*工廠方法*而不是*構造函數*)。讓我們這樣說吧:不應該有一個使用/導入RacingBike和Scanner的類。 – Bohemian

相關問題