gpt4 book ai didi

Java - toString 无法正确打印数组

转载 作者:行者123 更新时间:2023-12-01 22:03:06 26 4
gpt4 key购买 nike

Java 问题。

我想用 to String 方法打印一个数组,但我得到的只是这个:

fifo.Fifo@2a139a55
fifo.Fifo@15db9742

我知道这指向保存数组的位置,但我怎样才能用 toStinr 方法实际打印出数组呢?

import java.util.ArrayList;

public class Fifo {

private ArrayList <Object> list;

public Fifo() {
this.list = new ArrayList <Object>();
}

public void push(Object obj) {
list.add(obj);
}

public ArrayList getList() {
return this.list;
}

public Object pull() {
if (list.isEmpty()) {
System.out.println("leer");
return null;
}
Object o = list.get(0);
list.remove(0);
return o;
}

@Override
public boolean equals(Object o) {
if (o == this)
return true;
if (o.getClass() == this.getClass()) {
Fifo other = (Fifo) o;
ArrayList otherList = other.getList();

if (otherList.size() == this.getList().size()) {
boolean sameObjects = true;
for (int i = 0; i < list.size(); i++) {
if (!list.get(i).equals(otherList.get(i))) {
sameObjects = false;
}
}
if (sameObjects)
return true;
}
}
return false;
}

public Fifo clone() {
Fifo cloneObj = new Fifo();

for (int i = 0; i < this.list.size(); i++) {
cloneObj.push(this.list.get(i));
}
return cloneObj;
}
}

这是单独的测试方法:

import java.util.*;

public class Aufgabe {

public static void main(String [] args){
Fifo test = new Fifo();
Fifo test2;

test.push(1234);
test.push("Hallo");
test.push(5678);
test.push("du da");

test.pull();

System.out.println(test.toString());
test2=test.clone();
System.out.println(test2.toString());
System.out.println(test2.equals(test));
}
}

最佳答案

首先,您没有使用数组,而是使用 ArrayList - 这是 List 的实现在Java中。

其次,您不是打印数组列表,而是打印包含它的对象 - Foo 的实例。 .

Fifo test = new Fifo();
// do stuff
System.out.println(test.toString());

如果你只是想打印出列表,你需要使用

Fifo test = new Fifo();
// do stuff
System.out.println(test.getList());

更好的解决方案是覆盖 toString在你的 Foo 类中。

public class Foo {
// everything you already have

public String toString() {
// you can format this however you want
return "Contents of my list: " + list;
}
}

当您将对象传递给 System.out.println 时,将自动调用此方法。 .

Foo test = new Foo();
// do stuff
System.out.println(test);

将导致 Contents of my list: [a, b, c] (其中 a, b, c 实际上是您列表中的任何内容)。

补充信息当您在 Java 中使用 System.out.println 时,请记住:

  • 基元将按原样打印,例如System.out.println(1)将打印1System.out.println(false)将打印false .
  • 对象实例(即非基元)将具有 toString() println 调用的方法.
  • 默认toString一个对象的值为 className@hashCode .
  • 默认toString一维数组的 [LclassName@hashCode 。额外的维度将导致额外的 [在字符串的开头。

关于Java - toString 无法正确打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361351/

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