【问题标题】:Method that looks at an int array and ignores multiples of a number查看 int 数组并忽略数字的倍数的方法
【发布时间】:2018-10-22 19:19:43
【问题描述】:

我正在制作一种忽略倍数的方法。输入是..
int[] Eliminate = new 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;
}

我遇到的问题是输出中有零。我认为这是因为我将新列表的长度设置为旧列表,即使新列表可能没有那么多数字。

【问题讨论】:

  • 您可以使用ArrayList&lt;Integer&gt; 还是必须使用int[]

标签: java arrays methods int


【解决方案1】:

这里有一个解决方案,可以让您创建一个大小合适的数组。不同是因为 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;
}

【讨论】:

  • 另外,这个 to bi static 方法可能没必要,但不会给你带来任何问题,只是因为你应该了解 static 的含义。
【解决方案2】:

使用 Java 8 Streams 的简单解决方案:

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个循环:

  1. 计算元素个数:

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

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

如您所见,要写的内容还有很多。

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 2016-01-02
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多