将数组放入更大的数组中

时间:2017-11-13 17:51:47

标签: java

我有一个术语数组(术语表示具有系数和度数的对象,表示为例如1.0x ^ 6)。我现在拥有的数组包含3个术语:

[1.0x^6, 4.0x^5, 10.0x^0].

我的目标是使用这些术语创建一个更大的数组,但也使用0系数的术语未在我的数组中表示。这可能不太清楚,所以基本上我希望我的新阵列看起来像:

[1.0x^6, 4.0x^5, 0.0x^4, 0.0x^3, 0.0x^2, 0.0x^1, 10.0x^0]. 

目前,我正在迭代我的原始数组,如果学位等于新的array.length - 1,我设置newArray[i] = array[i],如果这是有道理的。例如,对于第一个学期和i = 0,学位为6,因此如果6 = newArray.length - 1(即6),则为newArray[i] = array[i]

然而问题是数组小于newArray,所以我得到一个越界错误。有想法该怎么解决这个吗?对不起,很长的帖子,谢谢!

编辑:这是我的实际代码。对不起,如果解释不清楚。

int max = 0;
    Term temp;

    for(int i=0; i<array.length; i++) {
        max = i;
        for(int j=i; j< array.length; j++) {
            if(array[j].getDegree() > array[max].getDegree()) {
                max = j;
            }

        }
         temp = array[i];
         array[i] = array[max];
         array[max] = temp;
    }

上面,数组按降序排序。我想现在让新数组包含旧的术语,但对于我的术语集中没有使用的所有i,也要使用0x ^ i。

Term[] newArray = new Term[this.degree()+1];
    for (int c = 0; c < newArray.length; c++) {
        if (array[c].getDegree()==newArray.length-1-c) {
            newArray[c] = array[c];
        }
        else {
            newArray[c] = new Term(0, newArray.length-1-c);
        }

    }

上面的代码中存在一些问题,我现在可以看到,因为在for循环中,没有为任何c&gt;定义数组[c]。 Eclipse告诉我,我有一个越界错误。

1 个答案:

答案 0 :(得分:1)

数组具有固定大小。如果要创建更大的数组,则需要事先知道大小并相应地定义它。此外,您似乎使用相同的迭代变量浏览两个数组。

我假设您正在做这样的事情:

  14    4
0.53758275 4.75834E+02 2.85629E+05 -9.65829E+01
2.76893E-01  8.53749E+02  4.56385E+05  -7.65658E+01
6.25576E-01  5.27841E+02  5.72960E+05  -7.46175E+01
8.56285E-01  4.67285E+02  5.75962E+05  -5.17586E+01

然后你总会得到一个数组索引超出范围的异常,因为&#34; array&#34;小于&#34; newArray&#34;当你&gt; = array.length时,你会超出界限。

您需要修复代码逻辑。