为了账号安全,请及时绑定邮箱和手机立即绑定

检查数组是否为235

检查数组是否为235

慕哥9229398 2023-06-21 13:25:01
我想检查数组是否为235。Is235 是一个数组,其中有一个可被 2 整除的整数、另一个可被 3 整除的整数和第三个可被 5 整除的整数。数组中的其他整数在与这些整数相加时不能被 2、3 或 5 整除能被 2、3 和 5 整除的数应等于数组中元素的总数。如果数组为235,则返回1,否则返回0。请注意,数组不能包含负整数或零。我只想以暴力方式解决这个问题,提前感谢您的帮助。我的错误尝试——public class Array {    public static void main(String[] args) {        int[] arr = {2, 3, 5, 7, 11};        System.out.println(is235Array(arr));    }    public static int is235Array(int[] a) {        int n = a.length;        int countOne = 0;        int countTwo = 0;        for (int i = 0; i < a.length; i++) {            if (a[i] / 2 == 0 || a[i] / 3 == 0 || a[i] / 5 == 0) {                countOne++;            }        }        for (int j = 0; j < a.length; j++) {            if (a[j] / 2 != 0 || a[j] / 3 != 0 || a[j] / 5 != 0) {                countTwo++;            }        }        if (countOne + countTwo != n) {            return 0;        }        return 1;    }}我的 countOne 和 countTwo 变量无法像我教的那样计算整数。
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

试试这个,我测试了它并且它有效,你应该使用余数运算符%:


public class Array {


    public static void main(String[] args) {


        int[] arr = {2, 3, 5, 7, 11};


        System.out.println(is235Array(arr));

    }


    public static int is235Array(int[] a) {

        int countOne = 0;

        int countTwo = 0;


        for (int i : a) {

            if (i % 2 == 0 || i % 3 == 0 || i % 5 == 0) {

                countOne++;

            }else{countTwo++;}

        }


        if (countOne + countTwo != a.length) {

            return 0;

        }else{return 1;}


    }

}


查看完整回答
反对 回复 2023-06-21
?
隔江千里

TA贡献1906条经验 获得超10个赞

检查数组是否为 235。is235Array。


public class Array{


static int is235Array(int[] a){


    int countNonMultiples = 0;

    int countMultiplesOfTwo = 0;

    int countMultiplesOfThree = 0;

    int countMultiplesOfFive = 0;


    for (int i : a){

        if(i % 2 == 0 ){

            countMultiplesOfTwo++;

        }

        if(i % 3 == 0){

            countMultiplesOfThree++;

        }

        if(i % 5 == 0){

            countMultiplesOfFive++;

        }

        if(i % 2 != 0 && i % 3 != 0 && i % 5 != 0 ){

            countNonMultiples++;

        }

    }


    if(countMultiplesOfTwo + countMultiplesOfThree + countMultiplesOfFive + countNonMultiples != a.length){

        return 0;

    }

    return 1;

}


public static void main(String[] args) {

    int[] arr = {7,2,7,2,7,2,7,2,3,7,7};


    System.out.println(is235Array(arr));

}

}


查看完整回答
反对 回复 2023-06-21
?
LEATH

TA贡献1936条经验 获得超6个赞

当你想比较一个整数是否可以被一个数字整除时,你应该使用余数运算符

所以这是代码:


public class Array {


    public static void main(String[] args) {


        int[] arr = {2, 3, 5, 7, 11};


        System.out.println(is235Array(arr));

    }


    public static int is235Array(int[] a) {

        int n = a.length;

        int countOne = 0;

        int countTwo = 0;


        for (int i = 0; i < a.length; i++) {

            if (a[i] % 2 == 0 || a[i] % 3 == 0 || a[i] / 5 == 0) {

                countOne++;

            }else{countTwo++;}

        }


        if (countOne + countTwo != n) {

            return 0;

        }else{return 1;}


    }

}

另请注意,没有必要编写 2nd,for loop因为它根本没有必要,而且如果您可以使用单个 for 循环完成任务,这是一种不好的做法。


另外如上所述,问题的答案for-each loop是, a比常规方法[性能方面]更好for loop,因此使用 afor-each loop会变成:

public class Array {


    public static void main(String[] args) {


        int[] arr = {2, 3, 5, 7, 11};


        System.out.println(is235Array(arr));

    }


    public static int is235Array(int[] a) {

        int countOne = 0;

        int countTwo = 0;


        for (int i : a) {

            if (i % 2 == 0 || i % 3 == 0 || i / 5 == 0) {

                countOne++;

            }else{countTwo++;}

        }


        if (countOne + countTwo != a.length) {

            return 0;

        }else{return 1;}


    }

}


查看完整回答
反对 回复 2023-06-21
  • 3 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信