gpt4 book ai didi

java - 数组方法打印几乎是正确的,只有一个值关闭,我不知道为什么

转载 作者:行者123 更新时间:2023-12-02 01:33:30 25 4
gpt4 key购买 nike

所以我试图将一个数组传递到一个单独的方法中,然后返回一个新大小的数组,但程序只有一个不正确的值。例如,我有一个数组

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

我正在尝试传递给我的 createLowerArray 方法

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

maxParam 就是用户输入的任何内容。假设他们输入 40,第二种方法将看到只有 4 个元素(12,33,7 和 23)小于 40,并创建一个长度为 4 的数组,位置 0 为 12,[1] = 33 ,[2] = 7,[3] = 23,但由于某种原因我的程序使得它如此。新数组中的位置 0 为 0、[1] = 12、[2] = 33 和 [3] = 7。长度正确,但值的位置不正确。我早些时候得到了这方面的帮助,并认为我已经做到了,这么快回来感觉很糟糕,但我似乎无法弄清楚。感谢任何提供帮助的人。我知道使用列表、流等可以使这变得更容易,但我需要循环练习。

预期输出应该是

int length = 4
[0] = 12
[1] = 33
[2] = 7
[3] = 23

当前输出为

int length = 4
[0] = 0
[1] = 12
[2] = 33
[3] = 7

最佳答案

眼前的问题在这里:

    for (int q = 0; q < betterInches.length; q++) {
if (myInchesParam[newCount] < maxParam) {
betterInches[q] = myInchesParam[newCount];
}
newCount++;
}

即使您没有复制该值,您总是递增newCount。另外,您需要循环 myInchesParam,而不是 betterInches:

    for (int j = 0, q = 0; j < myInchesParam.length; j++) {
if (myInchesParam[j] < maxParam) {
betterInches[q] = myInchesParam[j];
q++;
}
}
<小时/>

此外,您所做的工作比必要的多得多 - 您当前的代码是输入数组大小的二次方。您可以在外循环的每次迭代中创建新的 betterInches 数组,然后丢弃它并在下一次迭代时再次创建它。

将内循环移出外循环:

for (int i = 0; i < myInchesParam.length; i++) {
if (myInchesParam[i] < maxParam) {
count++;
}
}

betterInches = new int [count];
for (int i = 0, q = 0; i < myInchesParam.length; i++) {
if (myInchesParam[i] < maxParam) {
betterInches[q++] = myInchesParam[i];
}
}

关于java - 数组方法打印几乎是正确的,只有一个值关闭,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55646326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com