Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法,该方法查看整数数组并忽略数字的倍数_Java_Arrays_Methods_Int - Fatal编程技术网

Java 方法,该方法查看整数数组并忽略数字的倍数

Java 方法,该方法查看整数数组并忽略数字的倍数,java,arrays,methods,int,Java,Arrays,Methods,Int,我正在制作一个忽略倍数的方法。输入为.. int[]消除=新的int[]{1,54,20,17,60} 这是密码 public static int[] EliminateMultiples(int[] List, int Num) { int[] New = new int[List.length]; int NewListIndex = 0; for (int i=0; i<List.length; i++) { if ((List[i] % Num

我正在制作一个忽略倍数的方法。输入为..
int[]消除=新的int[]{1,54,20,17,60}

这是密码

public static int[] EliminateMultiples(int[] List, int Num) {
int[] New = new int[List.length];
    int NewListIndex = 0;
    for (int i=0; i<List.length; i++) { 
        if ((List[i] % Num !=0 )) {
            New[NewListIndex] = List[i];
        }
        NewListIndex++;
        System.out.println(New[i]);
    }
    return New;
}
public static int[]消除多个(int[]列表,int Num){
int[]New=New int[List.length];
int NewListIndex=0;

对于(int i=0;i使用Java 8流的简单解决方案:

public static int[] eliminateMultiples(int[] list, int num) {
    return Arrays.stream(list).filter(i -> i % num != 0).toArray();
}
如果您还想打印每个元素,可以
peek
到流中并打印它们:

public static int[] eliminateMultiples(int[] list, int num) {
    return Arrays.stream(list).filter(i -> i % num != 0).peek(System.out::println).toArray();
}
如果确实需要使用阵列,则至少需要2个循环:

  • 计算元素的数量:

    int count = 0;
    for (int element : list) {
        if (element % num != 0)
            count++;
    }
    
  • 使用元素数(从1开始)创建数组并填充它

    int[] result = new int[count];
    int i = 0;
    for (int element : list) {
        if (element % num != 0) {
            result[i++] = element;
        }
    }
    return result;
    

  • 正如您所看到的,这需要编写更多的内容。

    这里有一个解决方案,它将使您的数组具有正确的大小。它不同于,因为NewListIndex被放入if中,最后数组被“修剪”成正确的长度

    public static int[] EliminateMultiples(int[] List, int Num) {
        int[] New = new int[List.length];
        int NewListIndex = 0;
        for (int i=0; i<List.length; i++) { 
            if ((List[i] % Num !=0 )) {
                New[NewListIndex] = List[i];
                 NewListIndex++;
            }
    
        }
        int [] ret=Arrays.copyOfRange(New, 0, NewListIndex);
    
        return ret;
    }
    
    public static int[]消除多个(int[]列表,int Num){
    int[]New=New int[List.length];
    int NewListIndex=0;
    
    对于(int i=0;我可以使用
    ArrayList
    吗?或者您必须使用
    int[]
    ?此外,可能不需要这种双静态方法,但它不会给您带来任何问题,因为您应该了解静态的含义。