gpt4 book ai didi

java将数组不同为特定值

转载 作者:行者123 更新时间:2023-11-29 06:34:43 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何将数组区分为特定值。

假设数组是:int [] A = {9, 5, 4, 3, 2, 1, 34, 53};

我还有另外两个具有空值的数组,假设它们是数组 B 和 C。

我有极限值 t = 4;

所以,我必须检查数组 A 的值。

如果数组 A 的值 <= t,则该值将被插入到数组 B。否则,该值将被插入到数组 C。

例如,从数组 A = {9, 5, 4, 3, 2, 1, 34, 53}

9, 5, 34, 53 必须插入到 B,所以数组 B 必须是:B = {9, 5, 34, 53};

4, 3, 2, 1 必须插入到 C,所以数组 C 必须是:C = {4, 3, 2, 1};

下面的代码是我试过的:

public class splArray {
public static void main(String [] args){
int [] A = {9, 5, 4, 3, 2, 1, 34, 53};
int [] B = new int[A.length];
int [] C = new int[A.length];
int t = 4;

for(int i = 0; i < A.length; i++){
if(A[i] <= t){
B[i] = A[i];
}
else {
C[i] = A[i];
}
System.out.println("B = "+ B[i]);
//System.out.println("C = "+ C[i]);
}
}
}

结果:

B = 0
B = 0
B = 4
B = 3
B = 2
B = 1
B = 0
B = 0

结果不符合我的预期。我该如何解决这个问题?

编辑:

我真正期望的是:必须删除 B 或 C 中的所有零值。

最佳答案

您不能对所有数组使用相同的索引。只需将值推送到数组而不指定索引。给你:

int j = 0; // For B
int k = 0; // For C

for(int i = 0; i < A.length; i++){
if(A[i] <= t) {
B[j] = A[i];
j++;
} else {
C[k] = A[i];
k++;
}
}

但是您应该真正使用 ArrayList,因为您不知道为数组 B 和 C 分配多大的空间。只要您需要更多空间,ArrayList 就会自动扩展。

int [] A = {9, 5, 4, 3, 2, 1, 34, 53};
ArrayList<Integer> B = new ArrayList<Integer>();
ArrayList<Integer> C = new ArrayList<Integer>();
int t = 4;

for(int i = 0; i < A.length; i++){
if(A[i] <= t) {
B.add(A[i]);
} else {
C.add(A[i]);
}
}

关于java将数组不同为特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23465798/

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