为啥我不能在“if”语句中与 '_' 字符进行比较? [关闭]
Posted
技术标签:
【中文标题】为啥我不能在“if”语句中与 \'_\' 字符进行比较? [关闭]【英文标题】:Why can't I compare to '_' char in an "if" statement? [closed]为什么我不能在“if”语句中与 '_' 字符进行比较? [关闭] 【发布时间】:2016-09-02 11:53:57 【问题描述】:尝试在StringBuffer
中搜索_
字符的出现。我的代码在下面,但是当我运行时,StringBuffer
中的每个数字都会打印Match
。
不知道这是否有区别,但我在学习网站上运行此代码,因此没有纯 Java 调试器。我检查了标准转义字符,这不是其中之一,所以我没有想法。
StringBuffer buffer = new StringBuffer(functionName);
System.out.println(buffer);
char compare='_';
char x;
for(int i=0;i<buffer.length();i++)
x = buffer.charAt(i);
System.out.println(x);
if(x==compare);
System.out.println("Match");
有人想吗?
【问题讨论】:
使用equals
方法而不是==
@kaanyılmaz 错误。为了比较char
,==
是正确的方法,与所有原语一样。
另外,FWIW,any 体面的 IDE 会在该特定行发出警告,准确说明它有什么问题。在这种情况下,他没有使用一个是 OP 的错。此外,使用 Always Put Braces Around 规则/重新格式化在这里会有所帮助。
【参考方案1】:
如果您在条件后删除;
,则可以
if (x == compare)
System.out.println("Match");
对于你的情况,它看起来像
if (x == compare); // if `x` and `compare` are equal, we do nothing
System.out.println("Match"); // it prints out `Match` regardless of the condition
【讨论】:
谢谢。就是那个!偷偷摸摸的分号...【参考方案2】:有时我们忘记从 if 语句中删除分号,所以这里最好使用条件运算符。下面是源代码。
StringBuffer buffer=new StringBuffer(functionName);
System.out.println(buffer);
char compare='_';
char x;
for(int i=0;i<buffer.length();i++)
x = buffer.charAt(i);
System.out.println((x==compare)?x+" Match":x);
【讨论】:
【参考方案3】:试试这个:
StringBuffer buffer=new StringBuffer(functionName);
System.out.println(buffer);
char compare='_';
char x;
for(int i=0;i<buffer.length();i++)
x = buffer.charAt(i);
System.out.println(x);
if(x==compare)
System.out.println("Match");
如果你添加';'在 if 语句之后,下一条指令不考虑进入 if 条件!
【讨论】:
【参考方案4】:固定:
StringBuffer buffer=new StringBuffer(functionName);
System.out.println(buffer);
char compare='_';
char x;
for(int i=0;i<buffer.length();i++)
x = buffer.charAt(i);
System.out.println(x);
if(x==compare) System.out.println("Match");
使用;
结束语句,因此它不会在if
中执行任何操作,并将继续下一行,即打印。您需要在 if 中移动打印,并且由于它是那里唯一的语句,因此您不需要。
您遇到的问题是即使您不需要大括号也应该使用它们的原因。
【讨论】:
【参考方案5】:问题出在这一行:
if(x==compare);
由于;
,您在此处结束 if 语句。所以,它每次都会打印"Match"
。
删除;
并制作它:
if(x==compare)
然后就可以正常使用了。
【讨论】:
以上是关于为啥我不能在“if”语句中与 '_' 字符进行比较? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在使用 Javascript 的 if 语句中重新分配这个变量? [复制]
为啥我不能使用正则表达式来评估 if...else 语句 [重复]