Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对使用逻辑运算符感到困惑吗_Java - Fatal编程技术网

Java 对使用逻辑运算符感到困惑吗

Java 对使用逻辑运算符感到困惑吗,java,Java,我有一个任务/项目要写一个程序,显示1到100之间的整数,这些整数可以被6或7整除,但不能同时被2整除。它不像我在下面写的那样工作。我的布尔值对问题的要求正确吗 import acm program.*; public class SixAndSeven extends ConsoleProgram { public void run() { for (int n = 1; n < 100; n++) { boolean year = (n

我有一个任务/项目要写一个程序,显示1到100之间的整数,这些整数可以被6或7整除,但不能同时被2整除。它不像我在下面写的那样工作。我的布尔值对问题的要求正确吗

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));
基本上,在求反之前,将a中的两组条件分组,以便条件正确地应用于这两个条件

为了让它更具可读性,您可以这样做。。虽然可能有点过分了

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

boolean year = (divisbleby6 || divisbleby7) && !divisibleby6and7 ;
或者梅尔建议的聪明方法可能更难一目了然地理解,它只在一个条件为真,而不是两个条件都为真时才返回真

boolean year = divisbleby6 != divisbleby7;

另外,正如用户1333371所建议的,您可能希望使用printlnn

您应该执行以下操作

boolean year = ((n % 6 ==0) || (n % 7 ==0)) && !((n % 6 == 0) && ( n % 7 ==0));
基本上,在求反之前,将a中的两组条件分组,以便条件正确地应用于这两个条件

为了让它更具可读性,您可以这样做。。虽然可能有点过分了

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

boolean year = (divisbleby6 || divisbleby7) && !divisibleby6and7 ;
或者梅尔建议的聪明方法可能更难一目了然地理解,它只在一个条件为真,而不是两个条件都为真时才返回真

boolean year = divisbleby6 != divisbleby7;

另外,正如用户1333371所建议的,您可能希望使用printlnn

使用括号设置运算顺序,并确保求反运算适用于6和7的模检查

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) {
                System.out.println(n);
            }

}

使用括号设置运算顺序,并确保求反运算同时适用于6和7的模检查

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) {
                System.out.println(n);
            }

}

你可以简单地写如下:

boolean year = (n % 6 == 0) != (n % 7 == 0)

你可以简单地写如下:

boolean year = (n % 6 == 0) != (n % 7 == 0)

如果它不起作用,那么不,它不正确;为了更有帮助,您应该编辑您的程序,以显示未给出正确答案的值的每个布尔项的值。我认为您应该打印n而不是布尔年。你也可能想把下半场改成!n%6==0&&n%7==0@user1333371是的,谢谢,那是一个打字错误如果它不起作用,那么不,它是不正确的;为了更有帮助,您应该编辑您的程序,以显示未给出正确答案的值的每个布尔项的值。我认为您应该打印n而不是布尔年。你也可能想把下半场改成!n%6==0&&n%7==0@user1333371是的,谢谢。那是个打字错误。我没有注意到,谢谢。考虑使用布尔MOD6= N% 6==0;mod7=mod7%==0;所以你不需要重做工作。它还允许您返回mod6!=mod7很可爱。我真的不建议使用布尔x=divisibleby6!=可除以7;我花了很长时间才弄明白那是怎么回事。这是一个非常聪明的代码,我不是说这是一种恭维。@DanielKaplan true添加了警告。我没有注意到,谢谢。+1。考虑使用布尔MOD6= N% 6==0;mod7=mod7%==0;所以你不需要重做工作。它还允许您返回mod6!=mod7很可爱。我真的不建议使用布尔x=divisibleby6!=可除以7;我花了很长时间才弄明白那是怎么回事。这是一个非常聪明的代码,我不是说这是一种恭维。@DanielKaplan true添加了警告。或者使用XOR而不是not equals。最佳答案。或者使用XOR而不是not equals。最佳答案。