gpt4 book ai didi

java - 整数数组访问 - Java

转载 作者:行者123 更新时间:2023-11-30 06:32:09 26 4
gpt4 key购买 nike

我有一个大小为 50 的整数数组。因此,如您所知,最初此数组的元素值将全部为 0。我需要做的是:如果数组 = [12,10,0,0,......0],for 循环只需要考虑非零元素,所以循环应该只执行两次..一次为 12 和下一个10。同样,如果数组 = [0,0,0,......0],则 for 循环根本不应该执行,因为所有元素都为零。如果数组是 [12,10,5,0,17,8,0,0,.......,0] 那么应该对前 6 个元素执行 for 循环,即使内部元素之一元素为零。

这是我所拥有的。这给了我一个 IndexOutOfBoundsException。请帮忙。另外,有什么方法可以动态增加 int 数组的大小而不是将大小设置为 50,然后在循环中使用它?提前感谢您的帮助!

int[] myArray = new int[50];
int cntr = 0;
int x = getXvalue();
int y = getYvalue();

if (x>y){
myArray[cntr] = x;
cntr++;
}

for (int p=0; p<= myArray.length && myArray[p]!=0 ; p++){
//execute other methods..
}

//解决方案:

我使用 ArrayList 而不是 int 数组来动态增加数组的大小。

ArrayList<Integer> myArray = new ArrayList<Integer>();

To set the value of the elements-
myArray.add(cntr, x); // add(index location, value)

最佳答案

更简洁的方法是:

解决此类问题最方便的方法是使用适当的 Collection。对于此示例,您可能会考虑使用 ArrayList<Integer> .

优点是您不必预先初始化给定大小的列表。如有必要,它还会调整大小。

另一个优点是您不必关心填充空元素以及处理列表末尾的空元素。

具体问题是:

for (int p=0; p<= myArray[cntr].length && myArray[p]!=0 ; p++){
//execute other methods..
}

这应该是非法的:

myArray[cntr].length

它需要是 myArray.length

您还从 0..50 开始迭代与 <=这个地址51你做的元素只有50元素,所以正确的代码行是

for (int p=0; p< myArray.length && myArray[p]!=0 ; p++){

关于java - 整数数组访问 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9060170/

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