当前位置: 首页 > 知识库问答 >
问题:

如何确定一个数组列表中的数字是否可以被另一个数组列表中的数字整除?

宇文金鑫
2023-03-14

我试图确定数组列表中的数字是否可以被antoher数组列表中的所有数字整除。我下面的代码输出listdiv列表中的所有数字,这些数字可以被listdivisor中的任何除数整除。我想输出列表中所有除数都可以整除的值,而不是它们中的任何一个。例如,如果我有listdiv=[1,2,3,,5,8]和listdivisor=[2,4]。预期的输出应该是8,但此代码输出2和8。

非常感谢。我们将非常感谢您的努力!

for (int i = 0; i < listdiv.size(); i++) {
            for (int c = 0; c < listdivisor.size(); c++) {
                if (listdiv.get(i) % listdivisor.get(c) == 0) {
                System.out.println("final results are :  " + listdiv.get(i));
                }
            }
        }

共有3个答案

鲍钊
2023-03-14

您的条件检查至少可被一个除数整除的值,这不是您想要的。

在生成输出之前,您需要检查所有的除数:

for (int i = 0; i < listdiv.size(); i++) {
    boolean divisible = true;
    for (int c = 0; c < listdivisor.size() && divisible; c++) {
        if (listdiv.get(i) % listdivisor.get(c) != 0) {
            divisible = false;
        }
    }
    if (divisible) {
        System.out.println("final results are :  " + listdiv.get(i));
    }
}
叶举
2023-03-14

您的错误似乎是由于您在命中第一个匹配除数时,将股息计算为可被所有除数整除。相反,您需要添加跟踪所有除数的逻辑,并确保每个除数都与给定的除数一起工作。

System.out.println("final results are: ");

for (int i=0; i < listdiv.size(); i++) {
    boolean isDivisible = true;
    for (int c=0; c < listdivisor.size(); c++) {
        if (listdiv.get(i) % listdivisor.get(c) != 0) {
            isDivisible = false;
            break;
        }
    }

    if (isDivisible) {
        System.out.println(listdiv.get(i));
    }
}
聂风史
2023-03-14

java 8的其他方式:

List<Integer> collect = listdiv.stream().filter(p ->
        listdivisor.stream().allMatch(d -> p % d == 0)
).collect(Collectors.toList());

或者使用并行Stream()获得更好的性能:

List<Integer> collect = listdiv.parallelStream().filter(p ->
        listdivisor.parallelStream().allMatch(d -> p % d == 0)
).collect(Collectors.toList());
 类似资料:
  • 我在数组列表(嵌套数组列表)中有一个数组列表,如下所示 现在我需要获取存在于arraylist的给定索引中的的实例并为其添加一个值。我使用了以下代码 但是它给了我一个错误 线程"main"java.lang.异常索引:0,大小:0 如何解决这个问题以及为什么会发生这种情况。 谢谢你

  • 问题内容: 我需要测试从1到1000的每个数字是3的倍数还是5的倍数。我认为我要这样做的方式是将数字除以3,如果结果是整数,则它将是3的倍数。与5相同。 如何测试数字是否为整数? 这是我当前的代码: 问题答案: 您可以使用模运算符执行此操作, 当且仅当是的精确倍数时,计算结果为true 。在小学数学中,这被称为除法运算的余数。 在您当前的方法中,您执行除法,结果将是 如果使用整数除法,则始终为整数

  • 很抱歉这太模糊了,但代码太多了。 这是一个五卡梭哈游戏。基本上,我试图将对象添加到另一个数组列表中的数组列表中。 这是我创建玩家数组并将手类中的数组添加到其中的地方,至少我认为这就是正在发生的事情: 稍后,我尝试在循环交易中将牌添加到玩家阵列中的手牌阵列中。由于有五张牌,第一个循环进行了五次。第二个是玩家数组的长度(玩家总数),每次应该添加一张卡。 Deck类中有一个deal方法,由以下方法初始化

  • 我正在尝试制作一个纸牌游戏,它有游戏类、纸牌类、玩家类、副牌类和手牌类。我想让它模拟现实生活,你从一副牌中抽5张牌到你手上 我让我的班级玩家将所有的卡片添加到一个叫做卡片的卡片组中。像这样: 它把它传递给我的班级甲板: 我在类手叫手创建了一个手数组列表: 如何将 5 个随机卡牌对象从我的套牌数组列表添加到我的手牌数组列表中?

  • 我想创建一个代码,帮助我将元素从“allWords”ArrayList复制到“差异词”。但他在不同单词ArrayList中的时间我希望一个单词只出现一个,消除“差异词”ArrayList中的冗余。 这是我想出的代码,我没有得到任何输出。 导入java。util。ArrayList; 公共类复制元素{ }

  • 给定一些数组数和一个正整数k,确定是否可能将这个数组分成k个连续数组。 示例: 自[1,2],[3,4]后输出为真