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

标签 java

我只想问为什么我的方法 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个 0 0 0

然而,结果应该是: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/

相关文章:

java - Sikuli 问题 - 捕获一个区域

java - 如何获取 JTable 中的文本?

java - 我的 XOR 加密的 java 类实现出了问题

java - 在调用它之前如何确保另一个线程的处理程序不为空?

java - 带注释的 Spring 依赖注入(inject)

java - 获取操作系统级别的系统信息

java - JPQL——空值到 boolean 值?

java - 如何在 spring mvc 中将 JSON 对象从 ajax 传递到 Controller ?

java - Java 中嵌套类中的静态成员

java - 如何修复工具栏在选择另一个选项卡之前不更改标题的问题?