打印出数组的元素,它显示哈希码而不是值

时间:2016-02-05 03:57:02

标签: java arrays

以下是课程。静态方法findMax返回arr[maxIndex],当我尝试在main方法中打印出来时,我得到一个内存位置而不是值。我想在数组的某个索引处打印出一个值。

我想打印该值,但不更改现有方法 (所以我必须通过主要解决问题。)

public class Problem1 
 {
     public static <AnyType extends Comparable<AnyType>> AnyType findMax(AnyType[] arr) 
    {
        int maxIndex = 0;
        for (int i = 1; i < arr.length; i++)
            if ( arr[i].compareTo(arr[maxIndex]) > 0 )
               maxIndex = i;
        return arr[maxIndex];
    }

    public static void main(String[ ] args)
    {
        Rectangle rect1 = new Rectangle(1,2);
        Rectangle rect2 = new Rectangle(2,2);
        Rectangle rect3 = new Rectangle(3,2);
        Rectangle rect4 = new Rectangle(4,2);
        Rectangle rect5 = new Rectangle(5,3);

        Rectangle[ ] rectangles = new Rectangle[5];
        rectangles[0] = rect1;
        rectangles[1] = rect2;
        rectangles[2] = rect3;
        rectangles[3] = rect4;
        rectangles[4] = rect5;

        System.out.println(findMax(rectangles));

    }

}

2 个答案:

答案 0 :(得分:2)

您的findMax()方法会返回Rectangle。默认情况下,Java不知道如何打印Rectangle。因此,您需要覆盖该类的toString()。目前,正在使用默认的Object.toString(),它只是打印哈希码。

答案 1 :(得分:0)

覆盖Rectangle类的toString方法