您好StackOverflow社区,

我遇到一些涉及将元素添加到数组中的输出问题。
我已经在课堂上创建了一个程序,并且该程序可以正常运行,但是当我在自己的计算机上运行相同的程序/代码时,会得到以下输出(有时会生成不同的数字/错误):

“玩具:

toysdemo.ToysDemo @ 15f5897toysdemo.ToysDemo @ b162d5“

为了更加清楚,下面是代码:

package toysdemo;



public class ToysDemo {
private float price;
private String name;

public float getPrice(){
    return price;
}

public void setPrice(float newPrice){
    price = newPrice;
}

public String getName() {
    return name;
}

public void setName(String newName) {
    name = newName;
}

public static void printToys(ToysDemo arrayOfToys[], int size) {
    //display content of array
    System.out.println("The toys: ");
    for (int i = 0; i < size; i++) {
        System.out.print(arrayOfToys[i]);
    }
    System.out.println();
}//print toys


public static void main(String[] args) {
    ToysDemo arrayOfToys[] = new ToysDemo[5];
    int numberOfToys = 0;
    // create two toys and save into array
    ToysDemo toy = new ToysDemo();
    toy.setPrice((float)111.99);
    toy.setName("Giant Squid");
    arrayOfToys[numberOfToys++] = toy;

    ToysDemo toy2 = new ToysDemo();
    toy2.setPrice((float)21.99);
    toy2.setName("small Squid");
    arrayOfToys[numberOfToys++] = toy2;


    //print toys into array
    printToys(arrayOfToys, numberOfToys); //the call
}
}


这是一个真正简单的程序,但是令人沮丧的是如何不会显示正确的输出。

如果有人能帮助我解决这个难题,我将不胜感激。

谢谢

最佳答案

实际上,您正在打印ToysDemo对象的引用。为了使System.out.println(arrayOfToys[i])工作,您的ToysDemo类需要重写toString方法。

样例代码:

public class ToysDemo {

    //class content...

    @Override
    public String toString() {
        return "My name is: " + name + " and my price is: " + String.format("%.2f", price);
    }
}

09-27 20:04