gpt4 book ai didi

java - 新手遇到数组问题

转载 作者:行者123 更新时间:2023-11-30 02:40:31 25 4
gpt4 key购买 nike

我已经自学 Java 几个星期了,但我完全陷入了我在网上找到的一个挑战问题。我已经彻底搜索了谷歌,看看是否有其他人问过,但我似乎找不到任何东西。由于我没有任何老师,我想知道 StackOverflow 上是否有人可以帮助我。

我的一种方法有问题,因为它总是让我的测试用例失败,而且我不确定到底是什么导致了它出错。

基本上,如果我输入一个像 [2, 8, 3, 9, 7] 这样的数组,我希望它像 [2, 3, 7, 8, 9] 这样输出。然而,由于我这里写得不好,我一直在开头获取额外的元素,结果是 [2, 2, 3, 7, 8, 9]。我使用此方法的具体目标是查找并返回一个数组,其中包含大于/等于“high”和小于/等于“low”的所有值,包括重复项。该数组的长度应与“范围”中的元素数量相同,因此也是方法名称。

我只是想正确地指导我应该采取的下一步,以消除第一个要素问题。我知道代码可能很糟糕而且很困惑,所以请耐心等待。

谢谢;感谢所有帮助!

public static int[] range(int[] a, int low, int high) {
if (a == null || a.length == 0) {
throw new IllegalArgumentException();
}

int[] newArr = new int[0];
if (low <= high) {
if (a.length == 1 && low >= a[0] && high <= a[0]) {
return a;
}

for (int i : a) {
if (i >= low && i <= high) {
int[] duplicate = new int[(a.length + 1)];
int count = 0;
for (int num : a) {
duplicate[count] = num;
count++;
}
duplicate[count] = i;
return duplicate;
}
}
}
if (newArr.length > 1) {
Arrays.sort(newArr);
}
return newArr;

}

最佳答案

如果我正确地阅读了您的规范,您将采用一个输入数组a和两个值lowhigh。您必须返回一个新数组,其中仅包含(包含)lowhigh 之间的元素。

您没有在任何地方编写元素应遵循的顺序(除了在测试用例中元素按升序排序之外)。注意:如果需要,您可以轻松添加 sort() 方法。

主要问题是您必须确定返回数组的大小。有很多方法可以做到这一点。为了简单起见,我将分两个循环进行。

public static int[] range( int[] a, int low, int high) {
int result_size=0;
int i, j;
// determine result size
for (i=0; i< a.length;i++) {
if ((low <= a[i]) && (a[i] <= high)) result_size++;
}
// build the result array
int [] result = new int[result_size];
j = 0; // destination
for (i = 0; i < a.length; i++) {
if ((low <= a[i]) && (a[i] <= high)) {
result[j] = a[i];
j++;
}
}
return result;
}

关于java - 新手遇到数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885736/

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