-2

以下のコードを同封しました。パート A で IndexOutOfRangeException が処理されませんでした。次に、以下のように Try-catch を試しましたが、現在取得しています

「C:\Users\Rahul Taneja\Documents\Visual Studio 2010\Projects\app\app の app.Form6.ZMove(String s1, String s2) にある app.exe で、タイプ 'System.IndexOutOfRangeException' の初回例外が発生しました。 \Form6.cs:136行目"

スタックトレースで

なぜそれが起こっているのか、そして何が解決策になるのか教えてもらえますか?

public void ZMove(string s1, string s2)
        {
            //Move 2-1-4-3
            int j = Int32.Parse(s1);
            int k = Int32.Parse(s2);
            for (int l = 0; l < k; l++)
            {
                try
                {
                    swap(array[2][j], array[1][j]); ///Part A
                    swap(array[1][j], array[4][j]);
                    swap(array[4][j], array[3][j]);
                    swap(array[3][j], array[2][j]);
                }
                catch (IndexOutOfRangeException e)
                {
                    MessageBox.Show(e.StackTrace);
                    //throw;
                }
            }
        }

        private void swap(char[] p1, char[] p2)
        {
            //throw new NotImplementedException();
            int l = p1.Length;
            for (int i = 0; i < l; i++)
            {
                char temp = p1[i];
                p1[i] = p2[i];
                p2[i] = temp;
            }
        }
4

2 に答える 2

0

問題になる可能性のある配列への12の異なるアクセスがあり、配列がどのように作成されるかを私たちに見せていません。合理的な人はあなたの特定の問題についてあなたを助けることはできません.

代わりに、この質問に答えてみます

をデバッグするにはどうすればよいIndexOutOfRangeExceptionですか?

  • Visual Studio で例外ウィンドウを開きます。
  • 共通言語ランタイムの例外ウィンドウを展開する
  • システム ノードを展開します。
  • System.IndexOutOfRangeException の Thrown チェックボックスをオンにします。

例外が発生すると、デバッガーが壊れます。ウォッチ、ツールチップ、コマンド、または即時ウィンドウを介して変数を検査します。何が問題なのかすぐにわかると思います。

ここに画像の説明を入力

注: [例外] ウィンドウには、次の方法でアクセスできます。

  • メニュー項目 デバッグ -> 例外
  • キーボード ショートカットCtrl+Alt+E
  • キーボード ショートカットCtrl+D,E
  • コマンド ウィンドウ>Debug.Exceptions
于 2012-07-19T21:39:25.807 に答える
0

文字列s1、s2が絶対位置であり、実際に行う必要がある可能性はありますか:

int j = Int32.Parse(s1) -1;

int k = Int32.Parse(s2) -1;
于 2012-07-19T16:23:35.117 に答える