Java数组,打印其他东西

时间:2013-01-09 17:38:32

标签: java arrays println

我正在尝试从我的数组中打印项目,但是当我运行程序时,它会打印出Orders:testorder@4, testorder@5等等。有关如何修复它的任何提示,以便写入123 Buy?

package hej;


public class TestOrder {
public static void main(String[] args) {

    Order order1 = new Order("123", "Buy");
    Order order2 = new Order("456", "Sell");
    Order order3= new Order("231", "Buy");
    Order order4= new Order("987", "Buy");


    OrderRegister orderregister = new OrderRegister();


    orderregister.addOrder(order1);
    orderregister.addOrder(order2);
    orderregister.addOrder(order3);
    orderregister.addOrder(order4);


    System.out.println("Orders: ");        
    for (int i = 0; i < orderregister.getArrayList().size(); i++){
        System.out.println(orderregister.getArrayList().get(i) + "-");

    }
}   

}

5 个答案:

答案 0 :(得分:7)

因为您没有为toString()课程定义Order方法。

当Java尝试打印Object时,它会尝试为该Object调用toString()方法,如果它找不到它使用Object超类中的toString()

默认情况下,对象toString()执行此操作:

getClass().getName() + '@' + Integer.toHexString(hashCode())

这正是您所看到的输出。

答案 1 :(得分:2)

TestOrder覆盖toString()方法。

答案 2 :(得分:1)

当您使用String连接对象时(就像在System.out.println(...)语句中),在对象上调用toString()方法,首先将其转换为String。

您需要覆盖toString()类的Order方法,并让它生成订单的字符串形式。

答案 3 :(得分:1)

这正是您应该期待的,因为您没有告诉Java任何其他方式将Order转换为String。如果您希望Java使用某种特定方式将Order.toString()转换为Order,请覆盖String

答案 4 :(得分:1)

您可以/应该尝试覆盖toString()方法(在您的示例中隐式调用),正如其他人所建议的那样。

例如:

@Override public String toString()
{
return String.format("%s , %s", this.getID(), this.getAction());
}