ArrayList 无缘无故地打印出一个额外的零作为第一个元素



我的程序应该检查从用户输入输入的平衡括号。我的程序涉及GUI,但与问题无关。如果输入的括号不平衡,我还必须向用户返回额外括号的位置。我创建了一个 ArrayList,显示找到的额外括号的输入字符串中的位置。我测试了程序,ArrayList 无缘无故地返回以 0 开头作为其中的第一个元素。然后,它返回所需的答案。此外,它会无缘无故地将数字分开。下面是我的代码,但是,我只包含与我的问题相关的代码:

输出的屏幕截图

    public boolean balancedParentheses(String inputtedInfo) 
    {
        Stack<Character> stack  = new Stack<Character>();
        for(int i = 0; i < inputtedInfo.length(); i++) 
        {
            char c = inputtedInfo.charAt(i);
            if(c == '(') 
            {     
                stack.push(c);
            } 
            else if(c == ')') 
            {
                if(stack.isEmpty() || stack.pop() != '(') 
                {
                  return false;
                }

            }

        }
        return stack.isEmpty();
    }
    public String determineProblem(String inputtedInfo)
    {
      List<Integer> positions = new ArrayList<>();
      String str = "";
      int q = 0;     
      int r = 0;

      for(int s = 0; s < inputtedInfo.length(); s++)
      {
         char d = inputtedInfo.charAt(s);
         if (d == '(')
         {
            q += 1;
         }
         else if (d == ')')
         {
            r += 1;
         }
         if (q > r && d == '(')
         {
            positions.add(s);
         }
         else if (r > q && d == ')')
         { 
            positions.add(s);
         }
      }
      String positionsString = "";
      for (int o : positions)
      {
        positionsString += o + "t";
      }
      if (q > r)
      {
          str = "There are excessive open parentheses! There are " + (q - r) + " extra open parentheses. The offending parentheses are at positions: "
          + positionsString;
      }
      else if (r > q)
      {
         str = "There are excessive closed parentheses! There are " + (r - q) + " extra closed parentheses. The offending parentheses are at positions: "
        + positionsString;
      }
      return str;

    }
    public String printResults()
    {

          String preresults = String.valueOf(balancedParentheses(inputtedInfo));
          String results = "";
          if (preresults == "true")
          {
            results = "You have balanced parentheses!";
          }
          else if (preresults == "false")
          {
            results = "You have unbalanced parentheses!";
          }

          String results2 = determineProblem(inputtedInfo);

          return results + " " + results2;
    }

在 determineProblem 中循环的第一次迭代中,d 是 '(' 所以 q 设置为 1。然后你块

if( q > r && d == '(' ){
  positions.add(s);
}

将 0 添加到位置数组列表。

另外:间距是因为在形成输出字符串时,每个索引之间包含一个制表符 (\t(。

最新更新