gpt4 book ai didi

java - (Java) 如何从列表中以字符串或字符串数​​组的形式返回对象?

转载 作者:行者123 更新时间:2023-12-01 11:48:39 25 4
gpt4 key购买 nike

编辑:我已将完整的类文件和测试程序文件上传到保管箱,以防您想自己尝试一下: https://www.dropbox.com/sh/03qsecq3bd55w78/AAA_PT_BczNGl7cTZO_Zf_qUa?dl=0

首先,抱歉,如果这是一个非常简单的问题 - 我才刚刚开始使用 java,而且根本没有很多编程经验。

所以我有两个类(class):Posada 和 Camino。 Posada 包含 Camino 对象的列表。我需要重写 Posada 的 toString 方法,以便它返回一个包含其列表包含的 Camino 对象的所有 toString 方法的字符串,如下所示:

波萨达:

public class Posada {

/*other attributes*/
private List<Camino> listCaminos;

/*Getters*/
public List<Camino> getLisaCaminos() {
return listCaminos;
}

/*Builder*/
public Posada(String nombre, int engRecuperada) {
/*Other attributes*/
this.listaCaminos = new ArrayList<Camino>();
}

/*Methods*/
public String getStringToReturn(){
String[] arrayCaminos = listCaminos.toArray(new
String[listCaminos.size()]);

String string = "";
string += /*Some other attributes that go before the Camino objects
and work fine*/;

for(int i = 0; i < listCaminos.size(); i++) {
string += ", " + arrayCaminos[i];
}

return string;
}

/*toString*/
@Override
public String toString() {
return getStringToReturn(); //failure
}

}

卡米诺

public class Camino {

/*Attributes*/
private Posada origin;
private Posada destination;
private int cost;

private static int costTotal;

/*Contructor*/
public Camino(Posada origin, Posada destination, int cost){
this.origin = origin;
this.destination = destination;
this.cost = cost;
Camino.costTotal = Camino.costTotal + cost;

}

/*Getters*/
public int getCost() {
return cost;
}

public Posada getDestination() {
return destination;
}

public Posada getOrigin() {
return origin;
}

/*Methods. Irrelevant*/


/*toString*/
@Override
public String toString() {
return "(" + getOrigin() + "--" + getCost() + "-->" +
getDestination()+ ")";
}

}

因此,打印 Posada 时的预期结果应该类似于“Other_attributes, (originCamino1--costCamino1-->destinationCamino1), (originCamino2--costCamino2-->destinationCamino2), (..), (originCaminoN--costCaminoN- ->destinationCaminoN)”,N 是列表中 Camino 对象的总数。但是,我不断收到以下错误:

Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.ArrayList.toArray(Unknown Source)
at apartado1.Posada.getStringToReturn(Posada.java:106)
at apartado1.Posada.toString(Posada.java:121)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)

我知道这一定是很容易解决的问题,但我环顾四周,发现无论我做什么都行不通。我尝试过使用 toString() 和 toArray(),但得到了相同的结果。这里希望你能帮助我。预先感谢!

最佳答案

为什么 ArrayList 的默认实现不起作用?这这:

@Override
public String toString() {
return listCaminos.toString();
}

关于java - (Java) 如何从列表中以字符串或字符串数​​组的形式返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951728/

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