/// <summary>
        /// 方法名:PiPei
        /// 功能:判断输入的括号是否匹配
        /// </summary>
        /// <param name="strKuoHao">输入的括号</param>
        /// <returns></returns>
        public string PiPei(string strKuoHao)
        {
            string strSs = "";
            Stack<char> stack=new Stack<char> ();
            int nZhT = 1;
            int i =0;
            //try
            //{
                while (i < strKuoHao.Length && nZhT == 1)
                {
                    foreach (char c in strKuoHao)
                    {
                        switch (c)
                        {
                            case '(':
                                stack.Push(c);
                                break;
                            case '[':
                                stack.Push(c);
                                break;
                            case '{':
                                stack.Push(c);
                                break;
                            case ')':
                                if (stack.Count > 0 && stack.Peek() == '(')
                                {
                                    stack.Pop();
                                    i++;
                                }
                                else nZhT = 0;
                                break;
                            case '}':
                                if (stack.Count > 0 && stack.Peek() == '{')
                                {
                                    stack.Pop();
                                    i++;
                                }
                                else nZhT = 0;
                                break;
                            case ']':
                                if (stack.Count > 0 && stack.Peek() == '[')
                                {
                                    stack.Pop();
                                    i++;
                                }
                                else nZhT = 0;
                                break;
                        }
                    }
                }
            
            //}
            //catch (OutOfMemoryException ex)
            //{
            //    MessageBox.Show(ex.Message);
            //}
            if (stack.Count == 0 && nZhT == 1)
                strSs = "匹配";
            else strSs = "不匹配";
            return strSs;
        }我写的一段关于查看括号匹配的 代码 但是 程序在输入单个括号 时会引发OutOfMemoryException异常  说是内存不足以继续执行程序 这是我第一次遇到这种情况不知道怎么解决  还请高手  帮忙

解决方案 »

  1.   

    改成while(true) 还是报错 
      

  2.   

    左括号为什么不加1?
            public static string PiPei(string strKuoHao)
            {
                string strSs = "";
                Stack<char> stack = new Stack<char>();
                int nZhT = 1;
                int i = 0;
                //try
                //{
                while (i < strKuoHao.Length && nZhT == 1)
                {
                    foreach (char c in strKuoHao)
                    {
                        switch (c)
                        {
                            case '(':
                                stack.Push(c);
                                i++;
                                break;
                            case '[':
                                stack.Push(c);
                                i++;
                                break;
                            case '{':
                                stack.Push(c);
                                i++;
                                break;
                            case ')':
                                if (stack.Count > 0 && stack.Peek() == '(')
                                {
                                    stack.Pop();
                                    i++;
                                }
                                else nZhT = 0;
                                break;
                            case '}':
                                if (stack.Count > 0 && stack.Peek() == '{')
                                {
                                    stack.Pop();
                                    i++;
                                }
                                else nZhT = 0;
                                break;
                            case ']':
                                if (stack.Count > 0 && stack.Peek() == '[')
                                {
                                    stack.Pop();
                                    i++;
                                }
                                else nZhT = 0;
                                break;
                        }
                    }
                }            //}
                //catch (OutOfMemoryException ex)
                //{
                //    MessageBox.Show(ex.Message);
                //}
                if (stack.Count == 0 && nZhT == 1)
                    strSs = "匹配";
                else strSs = "不匹配";
                return strSs;
      

  3.   

    我说你的语句变成while(true)了