gpt4 book ai didi

java - 如何根据另一个元素参数更改数组列表中特定元素的特定参数

转载 作者:行者123 更新时间:2023-11-30 07:42:39 25 4
gpt4 key购买 nike

我是 java 的新手,但一直在玩数组列表,现在卡住了。

我有一个基于名为 Car 的类创建的数组列表,该类具有三个参数,其中一个参数称为 times moved

数组列表:

 private ArrayList<Car> list = new ArrayList<Car>() ;

汽车类

 public Car ( String licenseNum, String carStatus , int timesMoved)
{
licensePlate = licenseNum ;
status = carStatus ;
moved = timesMoved;
}

我正在读取一个应该像车库的文件的输入,并显示汽车是“到达”还是“离开”

我正在尝试使用 if 语句编写代码,该语句表示如果状态为“正在离开”,则当前元素将被删除,它前面的所有元素将添加一个到它们的“times moved parameter”

我坚持的部分是,根据被删除的元素,数组列表中它前面的所有元素在它们的"times moved" 参数中加一。

谁能给我一些关于如何做到这一点的建议?

我想出了这个,但它似乎不起作用

public void carDepart()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("DEPART"))
{
int pos = list.indexOf(i);

for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}

list.remove(i);
}
break;
}
}

第二种方法

    public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++;

if (currentCars <= 10)
{
System.out.println("Car with license plate" +
current.getLicenseNum() + " has been moved into the garage");
}
else
{
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--;
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}

最佳答案

这是您可以执行的操作的示例。在其中,我假设您正在使用 getter 和 setter。您也可以直接调用属性,假设您已经以允许您这样做的方式设置了访问修饰符。

我所做的只是创建一个名为 incrementTimesMoved() 的新方法,该方法遍历您的 ArrayList 并递增其元素中的所有“已移动”属性,直到到达具有给定索引的元素。它删除它,并停止运行。

public class MCVE {

public static void main(String[] args) {
// IMO list isn't very descriptive, so I changed it to carList.
ArrayList<Car> carList = new ArrayList<>();

// Add a bunch of values to carList here.

for(int i = 0; i < carList.size(); i++) {
if(carList.get(i).getStatus().equals("Departing")) {
incrementTimesMoved(i, carList);
return; // stops the method
}
}

}

// only static because I am calling in the main() function
private static void incrementTimesMoved(int index, ArrayList<Car> carList) {

for(int i = 0; i < carList.size(); i++) {

if(i == index) {
carList.remove(index);
return;
}

carList.get(i).setMoved(carList.get(i).getMoved() += 1);
}
}

}

关于java - 如何根据另一个元素参数更改数组列表中特定元素的特定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com