构造对象混淆

时间:2015-12-18 03:05:00

标签: java arrays multidimensional-array

所以,我正在制作一个程序来计算给定七个速度和六个轨迹角度的距离。考虑到进行必要的42次操作的公式,我必须将结果存储在一个二维数组中,并以整齐有序的方式打印结果。

我对为什么程序的某个部分不起作用感到困惑。这对我来说似乎没问题,但输出并不是我所期待的,因为它是随机和不合逻辑的。错误是代码给出的输出,导致“Catapult @ xxxxx ....”,其中“x”代表一系列随机字母,数字或字符。我不确定它们来自哪里以及为什么,所以我想解释一下,以及如何解决这个地雷问题。源代码如下:

static final int ROWS = 7;
static final int COLS = 6;

public static void main(String[] args)
{
    double[] angles = {25.0, 30.0, 35.0, 40.0, 45.0, 50.0};
    double[] rads = new double[COLS];
    for(int i = 0; i < COLS; i++)
    {
        rads[i] = Math.toRadians(angles[i]);
    }
    double[] speeds = {20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0};

    Catapult[][] projectile = new Catapult[ROWS][COLS];
    for(int a = 0; a < ROWS; a++)
    {
        for(int b = 0; b < COLS; b++)
        {
            projectile[a][b] = new Catapult(speeds[a], rads[b]);
        }
    }

如果您在第二个for循环中在System.out.print(projectile[a][b] + " ");之后键入projectile[a][b] = new Catapult(speeds[a], rads[b]);,则会导致前面描述的错误。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

class Catapult {

    @Override
    public String toString() {
        // Do here what you want to print
        return "Catapult{}";
    }
}

修改

public String toString() 返回对象的字符串表示形式。通常,toString方法返回一个“文本表示”此对象的字符串。结果应该是一个简洁但信息丰富的表示,便于人们阅读。建议所有子类都重写此方法。 类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于值的字符串:  getClass()。getName()+'@'+ Integer.toHexString(hashCode()) 返回: 对象的字符串表示。