Java - 混合数据类型/打印它们

时间:2012-03-18 21:51:51

标签: java arraylist

假设我有我自己定义的数据类型:

    public class InformationType
    {
        private String brand;
        private int number;
        private double power;

        public PurchaseInfo(String brand, int number, double power)
        {
             this.brand = brand;
             this.number = number;
             this.power = power;
        }
        public String getBrand()
        {
            return this.brand;
        }
        public int getNumber()
        {
            return this.number;
        }
        public double getPower()
        {
            return this.power;
        }
    }

然后我有一个打印字符串的程序,它只是一个字符串,一个int或一个double,我将它们全部添加到一个与我创建的类型相同的数组中:

      theInfo.add(new InformationType(theBrand, theNumber, thePower))

当我做一个循环,只是检查我是否正确我只是得到指针(我认为它被调用)给他们而不是真正的字符串/ int / double。我想打印所有类型,而不使用我的getter。这就是我所做的:

     for (InformationType x : theInfo)
     {
          System.out.println(x);
     }

我收到的信息如InformationType @ abcd12412413等。

是的,我用以下信息制作了信息:

     ArrayList<InformationType> theInfo = new ArrayList<>();

感谢。

3 个答案:

答案 0 :(得分:2)

您应该覆盖InformationType中的toString()

重写的方法应反映出您希望将InformationType的实例表示为String的方式。

答案 1 :(得分:2)

您需要覆盖toString。 e.g:

public class InformationType {
    ...

    @Override
    public String toString() {
        return "{" + brand + "," + number + "," + power + "}";
    }
}

现在,println会自动调用它。

答案 2 :(得分:0)

您需要覆盖toString()课程中的InformationType方法。编写它以便它以您想要的格式返回数据的String。也许是这样的:

public String toString() {
    return String.format("%s %d %f", brand, number, power);
}

所有对象都有toString()方法,但默认实现是以十六进制格式打印类型名称,“@”符号和对象的哈希码。当您覆盖toString()时,您可以返回任何您喜欢的内容。唯一的限制是您不应该真正返回null