gpt4 book ai didi

java - 在java中使用数组陷入困境

转载 作者:行者123 更新时间:2023-12-01 06:35:00 27 4
gpt4 key购买 nike

我对编码还很陌生。我正在尝试获取一个填充有“x”个元素的数组,并且需要找到一个数字范围。参数采用数组、最小数量和最大数量。最终结果需要包括最小值、最大值以及它们之间的数字。这是我正在谈论的一个例子:

The starting array:[2, 8, 7, 3, 4]   
Min value: 1
Max value: 5
End result: [2, 3, 4]

我希望这不会令人困惑,并且我已经解释得足够好以便理解。

我的代码是这样的:

public static int[] range(int[] a, int low, int high) 
{
int[] rangeArray = new int[0];

for (int i = low; i <= high; i++)
{
if (low >= a.length && high <= a.length)
{
rangeArray[i] = a[i];
}
}

return rangeArray;
}

最佳答案

您的第一个问题在这里:

int[] rangeArray = new int[0];

它的作用是实例化名为 rangeArray 的整数数组。然后将其初始化为长度 0 。因此,添加到该数组中的任何内容都将是越界的。您应该将其初始化为返回结果的长度;在这种情况下很困难。

然后我们有这个代码块:

for (int i = low; i <= high; i++) //start at the lowest possible number and go to the highest
{
//check for validity
}

这里有一些概念问题;您正在从 low 迭代至high 。如果 low 会怎么样?非常低(-100 万?)并且 high同样很高?想了很多却没有结果。

相反,让我们循环遍历实际给出的数组:

for (int idx = 0; idx < a.length; idx++) {
//Check the value of int, if it is in the desired range, save it.
}

最后,让我们考虑一下:

if (low >= a.length && high <= a.length)

这大致翻译为“如果我想要的范围的低端大于我正在检查的数字列表的长度,并且我的范围的高端小于相同的长度,则采用“true”分支”。这不是您要找的。

相反,您希望“如果当前指数值在我的最低值和最高值之间,则保留它。”

if (a[idx] >= low && a[idx] <= high)

将其卷起我们得到:

public static int[] range(int[] a, int low, int high) 
{
int[] rangeArray = new int[a.length];//this is the most we will need
int numbersFound = 0;//to keep track of result array index

for (int idx = 0; idx < a.length; idx++) {
{
if (a[idx] >= low && a[idx] <= high)
{
rangeArray[numbersFound++] = a[i];
}
}

return rangeArray;
}

请注意,在这种情况下,您的数组末尾可能会有一些空单元格。使用前请注意这一点!

关于java - 在java中使用数组陷入困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247405/

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