java - 对使用逻辑运算符感到困惑

标签 java

<分区>

我有一个作业/项目要编写一个程序来显示 1 到 100 之间的整数,这些整数可以被 6 或 7 整除,但不能同时被两者整除。它不像我在下面写的那样工作。我的 boolean 值对于问题的要求是否正确?

import acm program.*;

public class SixAndSeven extends ConsoleProgram {
    public void run() {
        for (int n = 1; n < 100; n++) {
            boolean year = (n % 6 ==0) ||
                (n % 7 ==0) &&
                !(n % 6 == 0) &&
                ( n % 7 ==0);

             if (year) {
                 println(year);
             }
        }
    }
}

最佳答案

你应该做下面的事情

boolean year = ((n % 6 ==0) || (n % 7 ==0)) && !((n % 6 == 0) && ( n % 7 ==0));

基本上在取反之前将 2 组条件分组到 () 中,以便条件正确地应用于两者。

为了使其更具可读性,您可以这样做..(尽管可能矫枉过正..)

boolean divisbleby6 = n%6 == 0;
boolean divisbleby7 = n%7 == 0;
boolean divisibleby6and7 = divisbleby6 && divisbleby7 ;

boolean year = (divisbleby6 || divisbleby7) && !divisibleby6and7 ;

或 Mel 建议的聪明方法(乍一看可能更难理解),它仅在一个条件而非两个条件都为真时返回 true

boolean year = divisbleby6 != divisbleby7;

附言此外,正如 user1333371 所建议的,您可能想要执行 println(n);

关于java - 对使用逻辑运算符感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391049/

相关文章:

java - 包含在 Set 上的 QueryDSL JPA 语法错误?

java - java中的位和字节

Java - 俄语编码

java - 保持最小应用程序服务器依赖性的方法?

java - 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

java - startRecording() 在未初始化的 AudioRecord 上调用

java - 为什么鼓励使用处理程序的私有(private)变量?

java - 从连接池中逐出到集群中只读节点的连接

java - 仅打印多页 pdf 中的一页

java - BigDecimal 在 soap 消息中有科学记数法