Java '.class' 预期错误

标签 java variables loops scope global-variables

下面的代码将出现编译错误:预期为“.class”:

Stack<Character> stack=new Stack<Character>();
char pop=stack.pop();

但是如果我改成这个,编译成功:

char pop;
Stack<Character> stack=new Stack<Character>();
pop=stack.pop();

原因是什么?

完整代码在这里:

 public class Solution {
    public boolean isValid(String s) {

        //char pop;
        if(s==null||s.length()==0)return true;
        Stack<Character> stack=new Stack<Character>();
        stack.push(s.charAt(0));
        for(int i=1;i<s.length();i++){
            char c=s.charAt(i);
            if(c=='('||c=='['||c=='{')
                stack.push(c);
            else{
                if(!stack.isEmpty())
                    char pop=stack.pop();
                else
                    return false;
                if(c==')'&&pop!='(') return false;
                else if(c==']'&&pop!='[') return false;
                else if(c=='}'&&pop!='{') return false;
            }
        }
        return stack.isEmpty();
    }
}

最佳答案

您在 if 条件中使用了 pop 作为局部变量。它应该是全局的,因为您稍后将使用 pop 值。
尽管在其他情况下将不会使用 pop。但还是会显示编译错误。
在您的代码片段中:

else{
            if(!stack.isEmpty())
                char pop=stack.pop(); // Here you initialized the value inside a condition.
            else
                return false;
            if(c==')'&&pop!='(') return false;
            else if(c==']'&&pop!='[') return false;// Using the value.
            else if(c=='}'&&pop!='{') return false;// Using the value.
        }

关于Java '.class' 预期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20224827/

相关文章:

python - 存储在变量中时找不到正确的文件

MYSQL,在同一语句中分配和读取变量

variables - 如何定义一个在调用后保留其作用域的宏

java - 无法解释 ANTLRWorks 输出

java - 应用程序引擎 URL 类日志记录警告

java - 在 java Rest API 中使用 json POST 请求的问题

java.lang.NoClassDefFoundError : HttpServletRequest 错误

java - 为什么我的程序在循环中跳过提示?

javascript - 如何迭代对象数组并添加属性

无法打印在循环中递增的变量值