我堅持邏輯,需要我的項目幫助。
我有一個文本文件,其中有5個車輛名稱。
然後,我要他們讀入ArrayList
,我沒有使用它:ArrayList對象(java)
public static void main(String[] args) throws IOException
{
BufferedReader bTextFileVehicleNames = new BufferedReader(new FileReader("vehicles.txt"));
ArrayList<String> vechicleNamesArray = new ArrayList<String>();
while((textFileLine = bTextFileVehicleNames.readLine()) != null)
{
vehicleNamesArray.add(textFileLine);
}
現在,我需要在ArrayList
創建每個項目(車名)一個對象,我沒有用:
for(String s : vehicleNamesArray)
{
newVehicle = new Vehicle(s);
//I defined this Vehicle newVehicle = null; in the main class. My main is also in the same Vehicle.java file.
}
這些對象中的每一個都具有屬性:power
,angle
, speed
; 和行爲:powerOn()
,powerOff()
, SpeedUp()
,SlowDown()
,等。我在Vehicle
類定義。
現在,用戶必須輸入Vehicle name命令。然後我將它們分開並採取[0]
這是車輛名稱,並且必須首先檢查它是否是ArrayList
(源自txt文件)中的那些車輛名稱中的一個,並且如果它然後必須將其引用到該特定對象我在上面創建。然後不得不採取在[1]
,這是對應於對象的特定行爲,它可以是powerOn
,speedUp
,等等等等命令..
for (int i=0; i< vehicleNamesArray.size(); i++)
{
if (vehicleNamesArray.get(i).matches(userVehicleName))
//userVehicleName is the [0] vehicle name entered by user
//userVehicleCommand is the [1] command entered by user
{
switch (userVehicleCommand.toLowerCase())
{
case "power on":
newVehicle.powerOn(); //calling that particular bahaviour of the object defined in Vehicle class.
System.out.println(newVehicle.getName()+" is powered ON.");
break;
...
...
例如,讓我們考慮有5輛車在txt(因此在ArrayList
)命名爲:奧迪,寶馬,梅賽德斯,大衆,保時捷。 問題是,無論我在車輛名稱命令中輸入,程序默認都採用最後一個元素,在這種情況下,保時捷在ArrayList
。 也就是說,當我說「奧迪,powerON」時,它仍然打印出「保時捷開機。」。
我想我搞砸了鏈接用戶輸入的名稱,以檢查ArrayList
,然後將其引用到該特定的對象。
是的,你有**一個**'newVehicle'對象,你分配每個項目。最後,最後的任務是剩下的。另外,你應該使用'try-with-resources'來關閉你的'BufferedReader'。 –
你的用戶使用正則表達式嗎?如果第一個'if'語句沒有使用。等於(), ,在我的expirience開關函數工作有點不好與字符串,考慮使用if語句那裏 – itwasntme
你的'newVehicle'變量是*一個*變量持有*一個*車輛實例,因此,如果你分配它的值循環,它將保留最後一個。如果你想擁有車輛列表*,那麼你必須創建並填充列表。 – Holger