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语句的执行流,那么您需要使用
{
}
指定控制块的位置。这是它们的用途。