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

检查数字列表是否可被两个输入整除?

鲁钱明
2023-03-14

我在写一个程序,你输入两个除数,你要检查的数字列表可以被你输入的两个数字整除。

下面是一个输出的示例:

Please input a command: A
 A [Create a new divisible test] 
 [Type two divisors]: 2 6
 [Input a list of numbers in one single line]: 2 4 6 9 15 18 19 25 30


Please input a command: D
 D [Display the information]
  ( 2 4 6 9 15 18 19 25 30 ) are numbers to check
  ( 2 4 6 18 30 ):   are divisible by 2
  ( 6 18 30 ):  are divisible by 6
  ( 6 18 30  ): are divisible by both 2 and 6

我的问题是它不会检查哪个数可以被两个除数整除,而是打印出来

  ( 2 4 6 9 15 18 19 25 30 ) are numbers to check
  ( 2 4 6 9 15 18 19 25 30  ):   are divisible by 2
  ( 2 4 6 9 15 18 19 25 30  ):  are divisible by 6
  ( 2 4 6 9 15 18 19 25 30   ): are divisible by both 2 and 6.

这是我的代码:

class Divisible {
    private int divisor1;
    private int divisor2;
    public String numbers;

    public Divisible() {
        divisor1 = (Integer) null;
        divisor2 = (Integer) null;
        numbers = " ";
    }

    public Divisible(int div1, int div2, String num) {
        this.divisor1 = div1;

        this.divisor2 = div2;

        this.numbers = num;
    }


    private boolean isDivisible1(int input) {
        boolean isDivisible1 = true;

        return (input % divisor1 == 0);
    }

    private boolean isDivisible2(int input) {

        boolean isDivisible2 = true;

        return (input % divisor2 == 0);
    }

    public String printDivisible1() {

        if (this.isDivisible1(divisor1)) {
            System.out.println();
            System.out.println("are divisible by " + divisor1);
        }
        return numbers;
    }

    public String printDivisible2() {

        if (this.isDivisible2(divisor2)) {
            System.out.println(" are divisible by " + divisor2);
        }
        return numbers;
    }

    public String printDivisibleBoth() {
        if (this.isDivisible1(divisor1) && this.isDivisible2(divisor2))
            System.out.println(" are  divisible by " + divisor1 + " and " + divisor2);
        return numbers;
    }
}

共有1个答案

郭志泽
2023-03-14

在我看来,你的代码中缺少了几个步骤!

为了解决这个问题,我们需要:

>

  • 将数字串拆分,并将其转换为整数,然后将其输入列表或数组。

    打印时遍历此列表,应用您的isDi可见()函数来确定它是否应该输出。

    首先,我想也许我们可以让你的程序更模块化一点。特别是你的isDi可见(int输入)函数可以改变成这样:

    private boolean isDivisible(int input, int divisor) {
        return (input%divisor==0);
    }
    

    这意味着我们可以对两个除数使用相同的函数!比如isDivisble(30,6)isDivisble(30,2)

    现在我们需要关注你要检查的一串数字。你会注意到我们的新函数要求输入一个整数,但我们目前有一个包含所有数字的巨大字符串。我们可以尝试以下功能:

    String[] numArray = num.split(" ");
    

    将字符串'num'拆分为多个片段,只要有空格(“”),然后将这些片段放入'numArray'数组的元素中。

    好了,现在我们有了输入数组。剩下的就是将这些元素转换成整数,这样它们就可以用作我们的isDivisible()函数的输入。我们可以使用整数。valueOf(str s)函数执行此操作!

    这就是我们完成这个问题所需的所有工具!综合起来,一个粗略的解决方案看起来像:

    String[] numArray = num.split(" ");
    for (int i = 0; i < numArray.length; i++) {
        if (isDivisible(Integer.valueOf(numArray[i]), div1)) {
            System.out.print(numArray[i] + " ");
        }
    }
    System.out.println("):   are divisible by " + div1);
    

    更新

    没有阵列!?好的,在这种情况下,我想你的老师希望你迭代输入,检查它们是否可除,如果可以,连接一些输出字符串。

    因此,让我们从添加几个字符串开始,这些字符串稍后将成为我们的输出到代码顶部:

    class Divisible {
        private String outputDiv1 = "( ";
        private String outputDiv2 = "( ";
        private String outputBoth = "( ";
    

    现在,对于这些输出中的每一个,我们只想连接可除数。我们可以在不使用数组的情况下通过循环字符串num的字符来实现这一点,并在找到如下空格时将数字拆分:

    //Since we're checking for spaces, we should probably add one to the end of our string, so we can find the last number!
    num += " ";    
    //We need to keep a record of the previous space!
    int lastSpace = -1;
    for (int i = 0; i < num.length(); i++) {
        if (num.charAt(i) == ' ') {
            //If the current character is a space, we know everything before it and the last space was a number
    
            //Our logic will go here!
            //Currently converts our string into an Integer and prints it out
            int currentNumber = Integer.parseInt(num.substring(lastSpace, i));
            System.out.println(currentNumber);
    
            //Update where the last space we found was
            //The '+ 1' is so we skip the spaces!
            lastSpace = i + 1;
        }
    }
    

    好的,不,我们正在遍历字符串,并在不使用任何数组的情况下将其拆分!剩下要做的就是应用我们之前制作的工具isDivisible()

    比如:

    if (isDivisible(currentNum, div1)) {
         outputDiv1 += currentNum;
    }
    

    可以放入//我们的逻辑到这里部分来确定是否应该将一个数字添加到我们的输出列表中!

    最后,我们打印完成的列表:

    System.out.println(outputDiv1 + " ): are divisble by " + div1);
    

  •  类似资料:
    • 格式如下所示: 输入:第一行包含一个整数T,表示测试用例的数量。第二行包含三个整数a、b和N 输出:对于每个测试用例,在新行中打印第N个数字。 样本输入 1 2 3 10

    • 问题内容: 我正在使用AndEngine将精灵添加到屏幕上,并使用movemodifier方法遇到。 我有两个整数MaxDuration和MinDuration; 我想要做的是当用户达到一定增量的分数时。 例如,当用户达到20(整数改变)时,用户达到40(整数改变)。因此,基本上是20分,每次得分遇到一个20分之一的数字,即整数的变化。我希望这是有道理的。 有什么方法或方法可以做到这一点吗?我有一

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

    • 我需要检查用户输入的内容是否正确。如果不是,我需要以msgbox的形式打印错误。 上面的代码似乎不起作用。 有什么想法吗?

    • 问题内容: 我知道我可以这样做: 然后只需编写语句中所需的代码。 还有其他方法可以检查它们是否相等? 问题答案: 怎么了 if(!Arrays.equals(array1,array2)) 与相同,即是同一数组。这不是大多数人期望的。 比较数组的内容。

    • 我正在尝试创建一个简单的程序来验证用户的输入是否为正整数。但是,在使用Scanner.hasNextInt()方法时遇到了一个问题。如果输入包含一个整数,比如“5个6”,我的程序将把6读入为一个整数。但是,我希望这样的语句无效,并提示用户只需要输入一个整数值。因此程序将输出“请输入整数值:”。 这就是我的程序的样子: 编辑:我理解next()与nextLine()之间的区别。然而,我的问题是实际仅