保持循环运行以检查多个条件 - Java

时间:2017-05-15 09:48:21

标签: java loops

我有一个包含整数的数组。我想迭代它们来检查它是否可以被2,3,5整除。目前我的代码只运行一次。

所以说如果我在列表中有6个。它只会返回" 6可以被2"它应该在哪里" 6可被2和3"

整除

那么我该如何使代码更优雅。有没有办法编写代码而不必定义像if (number % 2 == 0) && (number % 3 == 0)...或者必须这样做?每次定义每个条件。

这是我的代码

public class checkingDivisibility {
    public static void main(String[] args) {
        int list[] = {1, 2, 3, 6, 8, 10, 12, 14, 15, 17, 19, 21};
        for (int x : list) {
            if (x % 2 == 0) {
                System.out.println(x + "div by 2 possible");
            } else if (x % 3 == 0) {
                System.out.println(x + "div by 3 possible");
            } else if (x % 5 == 0) {
                System.out.println(x + "div by 5 possible");
            }
            }
        }
    }

4 个答案:

答案 0 :(得分:7)

else if后面有if,这意味着只有当第一个if条件为false时,才会评估下一个else if条件。这不是你想要的。

你想要的是,应该检查每个条件。因此,您不需要if个语句,只需要独立的public class checkingDivisibility { public static void main(String[] args) { int list[] = {1, 2, 3, 6, 8, 10, 12, 14, 15, 17, 19, 21}; for (int x : list) { if (x % 2 == 0) { System.out.println(x + "div by 2 possible"); } if (x % 3 == 0) { System.out.println(x + "div by 3 possible"); } if (x % 5 == 0) { System.out.println(x + "div by 5 possible"); } } } } 。 试试这个..

var angularProtractor = require('gulp-angular-protractor');
gulp.task('test', function (callback) {
     gulp
         .src([__dirname+'/public/apps/adminapp/**/**_test.js'])
         .pipe(angularProtractor({
             'configFile': 'public/apps/adminapp/app.test.config.js',
             'debug': false,
             'args': ['--suite', 'adminapp'],
             'autoStartStopServer': true
         }))
         .on('error', function(e) {
             console.log(e);
         })
        .on('end',callback);
});

答案 1 :(得分:4)

而不是单个if-else if ...条件使用单独的条件:

        if (x % 2 == 0) {
            System.out.println(x + "div by 2 possible");
        }
        if (x % 3 == 0) {
            System.out.println(x + "div by 3 possible");
        } 
        if (x % 5 == 0) {
            System.out.println(x + "div by 5 possible");
        }

这样,将在循环的每次迭代中评估所有三个条件。

当然,如果您想要6 is divisible by 2 and 3之类的输出,那么您需要做一些更聪明的事情。您可以使用布尔变量来实现此目的。

        boolean divFound = false;
        if (x % 2 == 0) {
            divFound = true;
            System.out.print(x + "is divisible by 2");
        }
        if (x % 3 == 0) {
            if (!divFound) {
                System.out.print(x + "is divisible by 3");
            } else {
                System.out.println(" and 3");
                divFound = true;
            }
        } 
        if (x % 5 == 0) {
            if (!divFound) {
                System.out.print(x + "is divisible by 5");
            } else {
                System.out.print(" and 5");
                divFound = true;
            }
        }
        if (divFound) {
            System.out.println();
        }

答案 2 :(得分:3)

 if (x % 2 == 0) {
            System.out.println(x + "div by 2 possible");
        }
        if (x % 3 == 0) {
            System.out.println(x + "div by 3 possible");
        } 
        if (x % 5 == 0) {
            System.out.println(x + "div by 5 possible");
        }

您将获得以下内容:

2div by 2可能 3div 3可能 6div 2可能 6div by 3可能 可以8div 2 可以10div乘2 可以10div乘5 可以12div乘2 12div 3可能 14div by 2可能 15div 3可能 15div by 5可能 21div by 3可能

我认为它适合你。

答案 3 :(得分:2)

你正在使用if ... else,如果这意味着如果满足第一个条件那么它将不会看起来是第二个条件。同样适用于其他条件。 因为你的输出只显示"可被2"整除;因为它只检查第一个条件,而不是第二个或更进一步。

所以,如果你想检查所有条件,你可以在所有条件下使用。