首页 > 解决方案 > 从 ArrayList 中删除多个数字

问题描述

我有这个练习“编写一个程序,构造一个包含数字 1 到 100 的 ArrayList 并将它们打印出来。然后向用户询问一个数字,并从列表中删除该数字的所有倍数(数字本身除外) ,然后再次打印列表。例如,如果用户选择 5,它将从列表中删除 10、15、20、25、30 等。

而且我似乎无法完成第二部分(删除所有倍数)

到目前为止,这就是我所拥有的:

package ArrayList1To100;

import java.util.ArrayList;
import java.util.Scanner;

public class OneToHundreed {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();

        for (int i = 1; i <= 100; i++) {
            list.add(i);
        }
        System.out.println(list);
        System.out.println("Next part of the exercise\n_________________________");
        System.out.println("Please enter a number");
        final int input = sc.nextInt();

        int i = 2;
        int x = i * input;
        while (list.contains(x)) {
            list.remove(x - 1);
        }
        System.out.println(list);

    }
}

我知道我的删除部分有缺陷,因为它只删除了一个数字。我已经尝试过使用 if 语句和一段时间。但我似乎无法找到联系。

标签: javaarraysloopsarraylist

解决方案


这不是整个程序,但足以给你一个想法。它使用removeIf和条件是该数字可以被输入整除但不等于输入本身。

int input = 2;
List<Integer> list = new ArrayList<>(List.of(1,2,3,4,5,6,7,8,9,10));
System.out.println(list);
list.removeIf(a->a != input && a % input == 0);
System.out.println(list);

印刷

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 5, 7, 9]

推荐阅读