java中的二进制或运算符比较字符
我被一些简单的东西卡住了,基本上我想验证以下内容java中的二进制或运算符比较字符,java,logic,Java,Logic,我被一些简单的东西卡住了,基本上我想验证以下内容 public class CharTest { public static void main(String [] args) { char myChar = '('; if (myChar != '(' | ')' ) { System.out.println("Fault"); } System.out.println("N
public class CharTest
{
public static void main(String [] args)
{
char myChar = '(';
if (myChar != '(' | ')' )
{
System.out.println("Fault");
}
System.out.println("No Fault");
}
}
但我一直在
java:6:错误:二进制运算符“|”的操作数类型错误
如果(myChar!='('|')')
^
第一类:布尔型
第二类:字符
1错误
我已经尝试过使用|以及| |如何实现我正在寻找的或功能?原因
二进制运算符可用于boolean | boolean
或number | number
。在你的情况下从 等于
( myChar!='(' ) | ')'
这给了你
boolean | character
但即使你想这样写myChar=(“(“|”)
二进制或将”(“|”)”
计算为)
,因为
'(' -> 101000
')' -> 101001
OR ------
'('|')'-> 101001 -> `)`
因此,(
条件将丢失
解决方案
您可能希望根据以下条件使用此表单:!(a或b)=!a和!b
myChar != '(' & myChar != ')'
甚至短路和
,以提高性能
myChar != '(' && myChar != ')'
这样,如果
myChar!=”(“
将返回false),整个条件将被估计为false,因为false
和任何东西都会给出false。您应该使用以下命令
if (myChar != '(' && myChar != ')' )
您必须分离比较并使用逻辑的&&
and运算符
根据,您必须使用和
运算符来实现您想要的操作。否则它将接受所有操作。and将强制您不需要这两个字符中的任何一个。Java在if
语句中使用。具有多个RHS操作数的表达式违反语法,因此编译器complains。由于逻辑运算符提供的特性,这里更倾向于使用逻辑运算符,而不是按位运算符
两边都有否定表达式的逻辑OR将始终为真。请改用&&
:
if (myChar != '(' && myChar != ')' )
你应该这样做
(myChar != '(' && myChar!= ')')
|
不是逻辑运算符,而是一个位包含或
按位|运算符执行按位包含或运算。不能说“不等于此字符或此字符”。Java让您分别对每个字符进行比较
if (myChar != '(' && myChar != ')')
注意这里需要&
,因为(1)“not(A或B)”与“(not A)和(not B)”相同,(2)我们关心的是布尔值,而不是位(使&
在这里看起来很奇怪)。我认为运算符“|”返回true或false,这无法根据字符值进行验证
以下方面应起作用:
if (!((myChar==')')||(myChar=='(')) ){
System.out.println("Fault");
}
15分钟前有这样一个问题,请使用搜索功能。如果(myChar!='(“| | myChar!=')@KanagaveluSugumar这将产生错误的行为。@HugoDozois是的。但我给出了如何使用管道(或条件)的示例…这不会产生好结果behavior@HugoDozois:你想说什么?这将匹配任何带有)
或的表达式(
。这是不需要的。你必须在语句之间放置一个逻辑and&
。这在逻辑上是正确的!@HugoDozois:谢谢你的建议:)
if (!((myChar==')')||(myChar=='(')) ){
System.out.println("Fault");
}