在意大利面条模式中占据主导地位。
以下是问题:
(检查一个数字)编写一个程序,提示用户输入一个整数并检查该数字是否可以被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 ");
}
}
}
答案 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运算符true
为true
。因此,第一个条件代表“3或7但不是两个”。接下来,我会在&&
中执行else if
个案例,因为“可以被3和7整除”,else
表示“可以被3和7整除”。