ArgumentOutOfRangeException是未处理的C#堆栈

时间:2012-12-08 17:30:32

标签: c# string stack arguments substring

我在第String行fromIndexString = topStiva.Substring(topStivaLength + 1,topStiva.Length)有问题; 。我表明topStiva.Length已经出局或范围。

代码如下:

String actiuneRezultata(String topStiva,String cuvIntr){

        int index = -1;

        String primulCharCuvIntr = cuvIntr.Substring(0, 1);

        if (primulCharCuvIntr.Equals("+") == true)
            primulCharCuvIntr = "\\" + primulCharCuvIntr;

        else
            if (primulCharCuvIntr.Equals("*") == true)
                primulCharCuvIntr = "\\" + primulCharCuvIntr;

        else
            if (primulCharCuvIntr.Equals("*") == true)
                primulCharCuvIntr = "\\" + primulCharCuvIntr;

        else
            if (primulCharCuvIntr.Equals("*") == true)
                primulCharCuvIntr = "\\" + primulCharCuvIntr;

        else
            if (primulCharCuvIntr.Equals("*") == true)
                primulCharCuvIntr = "\\" + primulCharCuvIntr;

        for (int i = 0; i < ta.Length; i++) {

            if (ta[i].CompareTo(primulCharCuvIntr) == 0) {

                index = i;
                break;
            }
        }

        int topStivaLength = topStiva.Length - 1;

        while (topStiva[topStivaLength] >= '0' && topStiva[topStivaLength] <= 9)
            topStivaLength--;

        String fromIndexString = topStiva.Substring(topStivaLength + 1, topStiva.Length);
        int fromIndex = int.Parse(fromIndexString);

        if (index < 0)
            return "Nu face parte din gramatica!";
        else
            return tabela[fromIndex][index];

    }

值topStiva是从调用actiuneRezultata(stivaAPD.Peek()。ToString(),another_value)中获取它的

我在stivaAPD中看到,在推出一些价值后,我正在打算。那为什么它超出范围?请帮助!

2 个答案:

答案 0 :(得分:0)

如果topStivaLength为-1,则此(topStiva[topStivaLength]将导致异常。

如果topStivaLength为0且topStiva为空字符串,则此(topStiva[topStivaLength]将导致异常。

下次准确指出您获得异常的行。

答案 1 :(得分:0)

String.Substring的第二个参数是所需子字符串的长度。你好像在调用它,就好像它是子串的(独占)结束索引一样。尝试调用以下内容,使您的长度等于到字符串结束索引的距离。

topStiva.Substring(topStivaLength+1, topStiva.Length - (topStivaLength+1));