gpt4 book ai didi

Java初学者在这里获得非零数字

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

我只想问为什么我的方法 NonZeros 中的 temp 没有改变它的元素,即使我显式地分配了 temp 的每个元素只要源有一个非零元素。这是我的作品。

package nonzeros;
public class NonZeros {
public static void main(String[] args) {
int [] B = {0,1,2,3,2};
int [] newone = NonZeros(B);
for(int q = 0; q < newone.length; q++){
System.out.println(newone[q]);
}
}
public static int[] NonZeros(int [] A){
int [] temp = new int[4];
for(int i = 0; i < A.length;i++){
if(A[i] != 0){
int j = 0;
temp[j] = A[i];
j++;
}
}
return temp;
}
}

结果如下:运行:2个000

然而,结果应该是:1 2 3 2

最佳答案

第一步,计算非零值。第二步,创建新数组。第三步,用非零值填充它,比如

public static int[] NonZeros(int[] A) {
int count = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] != 0) {
count++;
}
}
int[] temp = new int[count];
int p = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] != 0) {
temp[p++] = A[i];
}
}
return temp;
}

或者,使用 lambda 和过滤器,例如

public static int[] NonZeros(int[] A) {
return Arrays.stream(A).filter(i -> i != 0).toArray();
}

关于Java初学者在这里获得非零数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992803/

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