for( int i = 0; i < s.length(); i++ )------------
你上边将字符串的字符放入stack的时候,已经跳过了某些标点符号,但是你这里的话,还是按照原来字符串的长度(包括了标点符号)来计算循环次数,显然是错的,所以后来会发生stack为空的错误。

解决方案 »

  1.   

    for( int i = 0; i < stack.size(); i++ ) //我判断问题在这里,但是没改好
                            |
                            |__________________改成这个           if( s.charAt( i ) ==((Character)stack.pop()).charValue() )  
                     j++;
      

  2.   

    最好改成这样:int j = 0;
    char[] tempChars =s.getChars();
    for(;stack.empty();)
      if(tempChars[j++] !=((Character)stack.pop()).charValue() )
             break;
    if(j==s.length()){
         System.out.println("y");
    }
      else
    {
      System.out.println("n");
    }
      

  3.   

    stack.empty()写错了,应该是!stack.empty() 
    ^_^