-1

行 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 で、いくつかの値をプッシュした後、私は元気になっていることがわかりました。では、なぜそれが範囲外なのですか?助けてください!

4

2 に答える 2

0

の 2 番目の引数String.Substringは、目的の部分文字列の長さです。代わりに、部分文字列の(排他的な)終了インデックスであるかのように呼び出しているようです。長さが文字列の最後のインデックスまでの距離と等しくなるように、次を呼び出してみてください。

topStiva.Substring(topStivaLength+1, topStiva.Length - (topStivaLength+1));
于 2012-12-08T17:34:43.060 に答える
0

topStivaLength が -1 の場合(topStiva[topStivaLength]、例外が発生します。

topStivaLength が 0 で、topStiva が空の文字列の(topStiva[topStivaLength]場合、例外が発生します。

次回は、例外が発生している行を正確に示してください。

于 2012-12-08T17:33:22.997 に答える