尝试在StringBuffer
中搜索_
字符的外观。我的代码如下,但是当我运行时,Match
的每个数字都会打印StringBuffer
。
不知道它是否有所作为,但是我在学习网站上运行此代码,因此没有纯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");
}
有人想到吗?
答案 0 :(得分:6)
如果您在条件
后删除;
,则可以
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
答案 1 :(得分:4)
问题在于这一行:
if(x==compare);
由于;
,你在这里结束了if句子。因此,它每次都会打印"Match"
。
删除;
并将其设为:
if(x==compare)
然后它会正常工作。
答案 2 :(得分:1)
修正:
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
中不执行任何操作,并将继续到下一行,即打印。你需要在里面移动打印,因为它是唯一的声明,你不需要{}
。
问题就是为什么你应该使用大括号即使你不需要大括号。
答案 3 :(得分:1)
试试这个:
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条件!
答案 4 :(得分:1)
有时我们忘记从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);
}