Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 为什么我会得到';运营者及&;未定义参数类型char、char';错误_Java_Arrays_Char_Boolean - Fatal编程技术网

Java 为什么我会得到';运营者及&;未定义参数类型char、char';错误

Java 为什么我会得到';运营者及&;未定义参数类型char、char';错误,java,arrays,char,boolean,Java,Arrays,Char,Boolean,为什么我不能在这里使用&&和| |?Java逻辑运算符仅对布尔值执行操作。因此,任何逻辑运算符的两个操作数都必须是布尔值。在您的代码中,board[x][y]是char类型,因此它会引发异常。你需要把它和布尔型的东西进行比较。 电路板[x+1][x+1]也是如此。 (从电话中键入)Java逻辑运算符仅对布尔值执行操作。因此,任何逻辑运算符的两个操作数都必须是布尔值。在您的代码中,board[x][y]是char类型,因此它会引发异常。你需要把它和布尔型的东西进行比较。 电路板[x+1][x+1]

为什么我不能在这里使用&&和| |?

Java逻辑运算符仅对布尔值执行操作。因此,任何逻辑运算符的两个操作数都必须是布尔值。在您的代码中,board[x][y]是char类型,因此它会引发异常。你需要把它和布尔型的东西进行比较。 电路板[x+1][x+1]也是如此。
(从电话中键入)

Java逻辑运算符仅对布尔值执行操作。因此,任何逻辑运算符的两个操作数都必须是布尔值。在您的代码中,board[x][y]是char类型,因此它会引发异常。你需要把它和布尔型的东西进行比较。 电路板[x+1][x+1]也是如此。 (从电话中键入)

您想要:

    if ((board[x][x] && board[x + 1][x + 1] && board[x + 2][x + 2]) == 'Y') {
            playerWins = true;
            }
&&
只能用于将布尔表达式连接在一起

您的代码假定了某种分布规则,例如
(x&&y)==z
等价于
(x==z)&(y==z)
。在英语中,您可以这样表述“如果x和y都是z”,但编程语言(和形式逻辑)没有这样的定义

    if ((board[x][x] && board[x + 1][x + 1] && board[x + 2][x + 2]) == 'Y') {
            playerWins = true;
            }
&&
只能用于将布尔表达式连接在一起


您的代码假定了某种分布规则,例如
(x&&y)==z
等价于
(x==z)&(y==z)
。在英语中,你可以这样表述“如果x和y都是z”,但是编程语言(和形式逻辑)没有这样的定义。

Java的条件求值与其他语言(如C、C++)不同

虽然循环条件(if、while和for中的退出条件)处于 java和C++都期望布尔表达式,如IF(a=5) 将在Java中导致编译错误,因为没有隐式 缩小从int到boolean的转换范围

有关详细信息,请参阅以下链接:

与其他语言(如C、C++)相比,Java的条件求值是不同的

虽然循环条件(if、while和for中的退出条件)处于 java和C++都期望布尔表达式,如IF(a=5) 将在Java中导致编译错误,因为没有隐式 缩小从int到boolean的转换范围

有关详细信息,请参阅以下链接:

您不能将这些表达式连接起来,以使用“&&”或“||”进行计算,因为它们不会计算为布尔值,但在本例中计算为字符

但是,您可以这样做:

if (board[x][x] == 'Y' && board[x + 1][x + 1] == 'Y' && board[x + 2][x + 2] == 'Y') {
    playerWins = true;
}
或者甚至是这样:

if (board[x][x] == 'Y' && board[x + 1][x + 1] == 'Y' && board[x + 2][x + 2] == 'Y') {
     playerWins = true;
}
/*因此,此方法检查电路板的值是否与“Y”不同,因此它会立即返回false,而不检查其他位置,否则,如果所有位置的值都等于Y,则不会访问if语句,
您将退出for循环并返回true;您的main方法必须存储返回的布尔值,而不是更多*/
public static boolean winGame(PARAMS p){//例如,您可以将2d数组作为参数提供给它。。
对于(intx=0;x
您不能将这些表达式连接起来,以使用“&&”或“| |”进行计算,因为它们不会计算为布尔值,但在本例中计算为字符

但是,您可以这样做:

if (board[x][x] == 'Y' && board[x + 1][x + 1] == 'Y' && board[x + 2][x + 2] == 'Y') {
    playerWins = true;
}
或者甚至是这样:

if (board[x][x] == 'Y' && board[x + 1][x + 1] == 'Y' && board[x + 2][x + 2] == 'Y') {
     playerWins = true;
}
/*因此,此方法检查电路板的值是否与“Y”不同,因此它会立即返回false,而不检查其他位置,否则,如果所有位置的值都等于Y,则不会访问if语句,
您将退出for循环&return true;您的main方法必须存储返回的布尔值,而不是更多*/
public static boolean winGame(PARAMS p){//例如,您可以将2d数组作为参数提供给它。。
对于(intx=0;x
什么类型的
变量?什么类型的
变量?