我坚持逻辑,需要我的项目帮助。
我有一个文本文件,其中有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