gpt4 book ai didi

java - 将一个实例添加到另一个实例的链表中

转载 作者:行者123 更新时间:2023-11-30 08:17:15 25 4
gpt4 key购买 nike

我是一名初学者 Java 程序员,我正在尝试将一个链接列表中名为 Person 的选定对象添加到另一个名为 Boat 的实例类中包含的链接列表。我可以选择我想要的两个对象,但我不知道如何将所选人员添加到所选船对象的链接列表中。我已经包含了 Person 和 Boat 类的详细信息来提供帮助。

我已将代码精简为最基本的内容来表达问题,如果该程序的更多内容有帮助,请告诉我。如有任何帮助,我们将不胜感激。如果我的问题不清楚,请告诉我,我会尝试重新表述该问题。

这是我当前使用的两种方法,以及存储船只的列表。我用“//!!”标记了关键区域

public class Base implements Serializable
{ private LinkedList<Boat> boats = new LinkedList<Boat>();
private Clients clients = new Clients();


public Base(){

}
// !! Here is where the boats are created
public void setup()
{ boats.add(new Boat(1, "Ed", 2));
boats.add(new Boat(2, "Fred", 7));
boats.add(new Boat(3, "Freda", 5)); }


public void getBoat(Boat boat) { `// !! Boat has already been selected by another method`

boat.passengers(add(getPassenger(passenger))); `// !! This is where I try to add the Person object into the linked list of the Boat object, this is the line that generates errors.`

}

public Person getPassenger(Person passenger) { `// !! passenger has already been selected by another method`

return passenger;
}

这是船类

import java.io.*;
import java.util.*;

public class Boat implements Serializable
{
private LinkedList<Person> passengers = new LinkedList<Person>();


public Boat()
{

}
}

这是人员类别

import java.io.*;
import java.text.*;

public class Person implements Serializable
{ private String name;
private int id;
private double cash = 100.00;
private int start = 0;
private int end = 0;
private double charge = 0;

public Person(String name, int id)
{ this.name = name;
this.id = id + 100; }
}

最佳答案

您可以在 Boat 类中创建一个方法来执行此操作:

public class Boat implements Serializable {   
private LinkedList<Person> passengers = new LinkedList<Person>();

public Boat() { }

public void addPassenger(Person p) {
this.passengers.add(p);
}
}

然后,您可以通过将 Person 对象传递给 addPassenger() 来将乘客添加到特定的船上。例如:

Boat boat = new Boat();
boat.addPassenger(new Person("Bob", 1));

不要以 getter 方法返回乘客列表。这会破坏封装,因为其他类将能够修改船的乘客列表,甚至清理它。

您的代码中还有一些问题。例如:

public Person getPassenger(Person passenger) {
return passenger;
}

此方法接收一个对象并返回该对象。它没有任何其他作用。你不需要它。

您的 getBoat() 方法接收 Boat 作为参数,但在其中您尝试访问 Passenger 对象。这位乘客来自哪里?

public void getBoat(Boat boat) {
boat.passengers(add(getPassenger(passenger)));
}

看来这个方法应该是这样的:

public void addPassengerToBoat(Boat boat, Passenger passenger) {
boat.addPassenger(passenger);
}

关于java - 将一个实例添加到另一个实例的链表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29483865/

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