首页 > 解决方案 > 无法让数组更改为正确的大小

问题描述

所以我试图通过从主方法传入一个数组,在一个单独的方法中创建一个不同长度的新数组,但我遇到了麻烦。本质上,我要做的是使我的起始数组值为

 int [] myInches = {89,12,33,7,72,42,76,49,69,85,61,23};

转移到我的 createLowerArray 方法,并通过将其与用户输入 maxParam 进行比较,创建一个新数组并返回它。

   public static int [] createLowerArray(int maxParam, int [] myInchesParam) {
    int [] betterInches = {0,0,0,0,0,0,0,0,0,0};
    for (int i = 0; i < myInchesParam.length; i++) {
        if (myInchesParam[i] < maxParam) 
            betterInches[i] = myInchesParam[i];
    } 
    return betterInches;
}

因此,假设用户输入“40”,它将查看 myInches/myInchesParam 中的相应元素是否更小,如果是,则将我在该方法中创建的数组替换为相应的值。因此,由于 12、33、7 和 23 是唯一小于 40 的元素,它应该创建一个长度为 3 且位置 0 为 12、[1] = 12、[2] = 7 和 [3] = 23 的数组.我知道由于内存问题,您不能使数组变得比现在更大,但是可以使数组变得更小,这是对的吗?如果这也不可能,那么我想知道如何得到这个结果,因为它返回的数组的长度与原始数组的长度相同,但元素位置不正确,这不是我想要做的。预先感谢您的任何帮助。

标签: javaarraysloopsoutputvariable-length-array

解决方案


您无法更改已创建数组的长度。这意味着您不能增加减少大小。您在这里有几个选择。首先,您可以使用ArrayList。使用列表的好处是它们具有可让您增加和减少数据长度的内置函数。

另一个选项(不需要ArrayLists)是在您知道它需要多长(或多短)之前不创建数组。为此,您可以编写一个 for 循环来计算要添加到新数组中的项目数。然后,在该循环之后,您创建一个该长度的数组。最后,编写第二个 for 循环,将元素添加到新创建的数组中。


推荐阅读