检查数字是否可以被3和7整除,或者两者都不可分

时间:2014-12-16 17:50:12

标签: java division

在意大利面条模式中占据主导地位。

以下是问题:

(检查一个数字)编写一个程序,提示用户输入一个整数并检查该数字是否可以被3和7整除,或者两者都不能整数,或者只检查其中一个。以下是输入的一些示例运行,9,21和25。

9可以被3或7整除,但不能两者都可以 21可以被3和7整除 25不能被3或7 /

整除

这是我到目前为止所拥有的。我知道我错了但不认为我离解决问题太远了。

public class Quest12 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a number: ");
        int i = scan.nextInt();

        if (i % 3 == 0 ^ 7 == 0) {
            System.out.println(i + " is divisible by 3 or 7. ");
        } 
        else if (i % 3 == 0 || 7 == 0)
        {
           System.out.println(i + " is divisble by either 3 or 7. but not both "); 
        }
        if (i % 3 == 0 && 7 == 0)
        {
            System.out.println(i + " is divisble by both 3 and 7 ");
        }
    }
}

2 个答案:

答案 0 :(得分:8)

我会执行每个模数并将结果存储在boolean个变量中。像,

boolean mod3 = i % 3 == 0;
boolean mod7 = i % 7 == 0;
if (mod3 && mod7) {
    System.out.printf("%d is divisible by 3 and 7.%n", i);
} else if (mod3 || mod7) {
    System.out.printf("%d is divisible by 3 or 7 (but not both).%n", i);    
} else {
    System.out.printf("%d is not divisible by 3 or 7.%n", i);       
}

答案 1 :(得分:1)

您不能使用XOR运算符^或其他运算符||&&来组合这样的2个条件,就像我们在英语中一样。 i是3的倍数,7不会转换为i % 3 == 0 && 7 == 0的代码。您必须明确地写出每个单独的条件。

if ((i % 3 == 0) ^ (i % 7 == 0)) {

else if ((i % 3 == 0) || (i % 7 == 0))

if ((i % 3 == 0) && (i % 7 == 0)

如果其操作数中只有一个是^,则XOR运算符truetrue。因此,第一个条件代表“3或7但不是两个”。接下来,我会在&&中执行else if个案例,因为“可以被3和7整除”,else表示“可以被3和7整除”。