Java 嵌套if,else if,不带括号
我的代码过去是:Java 嵌套if,else if,不带括号,java,Java,我的代码过去是: for(int i=1; i<par.length(); i++) { if( '}'==(par.charAt(i)) ) if(parStack.pop()!='{') return false; else if( ')'==(par.charAt(i)) ) if(parStack.pop()!='(')
for(int i=1; i<par.length(); i++)
{
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
else if( ']'==(par.charAt(i)) )
if(parStack.pop()!='[')
return false;
else if ( '{'==(par.charAt(i)) || '['==(par.charAt(i)) || '('==(par.charAt(i)))
parStack.push(par.charAt(i));
}
for(inti=1;i仅仅因为您以这种方式缩进了代码,它就不会像您期望的那样工作(这不是Python)
事实上
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
...
相当于:
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
...
这不是你想要的
如何避免这种情况?您可以使用带有自动括号的IDE,如Eclipse。或者自己使用括号:
if ('}' == (par.charAt(i))) {
if (parStack.pop() != '{') {
return false;
}
} else if (')' == (par.charAt(i))) {
if (parStack.pop() != '(') {
return false;
}
} ...
仅仅因为您以这种方式缩进了代码,它就不会像您期望的那样工作(这不是Python)
事实上
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
...
相当于:
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
...
这不是你想要的
如何避免这种情况?您可以使用带有自动括号的IDE,如Eclipse。或者自己使用括号:
if ('}' == (par.charAt(i))) {
if (parStack.pop() != '{') {
return false;
}
} else if (')' == (par.charAt(i))) {
if (parStack.pop() != '(') {
return false;
}
} ...
我认为这是因为第一个else适用于本节代码中最近的if语句,即第二个if语句:
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
为了使其按预期工作,您需要至少将外部ifs括起来:
if( '}'==(par.charAt(i)) )
{
if(parStack.pop()!='{')
return false;
}
else if( ')'==(par.charAt(i)) )
{
if(parStack.pop()!='(')
return false;
}
....
我认为这是因为第一个else适用于本节代码中最近的if语句,即第二个if语句:
if( '}'==(par.charAt(i)) )
if(parStack.pop()!='{')
return false;
else if( ')'==(par.charAt(i)) )
if(parStack.pop()!='(')
return false;
为了使其按预期工作,您需要至少将外部ifs括起来:
if( '}'==(par.charAt(i)) )
{
if(parStack.pop()!='{')
return false;
}
else if( ')'==(par.charAt(i)) )
{
if(parStack.pop()!='(')
return false;
}
....
描述它没有正常工作。你的意思是它做了什么?它实际上做了什么?嗯,你没有更改括号,是吗?你认为是什么使它工作的?你的代码是一个完美的例子,说明了为什么括号从来都不是可选的。另外,你可以用if(a&&B)替换if(a)if(B)为了更好的可读性,请说明它没有正常工作。你的意思是它做了什么?它实际上做了什么?嗯,你没有更改括号,是吗?你认为是什么使它工作的?你的代码是一个完美的例子,说明了为什么括号从来都不是可选的。此外,你可以用if(a&&B)替换if(a)if(B)为了更好的可读性,这是正确的。如果您想要控制If/else语句的执行流,那么您需要使用{
和}
来指定控制块的位置。这就是它们的用途。这是正确的。如果您想要控制If/else语句的执行流,那么您需要使用{
和}
指定控制块的位置。这是它们的用途。