none
索引在陣列的界限之外 RRS feed

  • 問題

  • 程式碼如下所示:

     private void btnTest_Click(object sender, EventArgs e)
                {
                int i, j;
                string output = "";
                // string[][] classes = new string[3][];
                // classes[0] = new string[] { "A", "B" };
                // classes[1] = new string[] { "C", "D","E" };
                // classes[2] = new string[] { "F", "G" };
                string[][] classes = new string[][]{
                new string[] { "A""B" },
                new string[] { "C""D""E" },
                new string[] { "F""G" }};
                for (i = 0; i < classes.GetLength(0); i++)
                    {
                    for (j = 0; j < classes[i].GetLength(0); j++);
                    output += classes[i][j] + "\t"; // 索引在陣列的界限之外 
                    output += "\r\n";
                    }
                txtOutput.Text = output;
                }
    2012年3月23日 上午 08:15

解答

  • 把內部for迴圈最後的分號拿掉試試

    2012年3月23日 上午 08:28
  • 內層迴圈多了一各分號

    for (j = 0; j < classes[i].GetLength(0); j++); //<---- 多了一各分號

    把他拿掉就可以了


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2012年3月23日 上午 08:30
  • 因為你第二個迴圈多了一個分號,導致output += classes[i][j]的j,永遠都等於classes[i].GetLength(0),而index又是以0為基礎的,j的最大值應該是classes[i].GetLength(0)-1, 所以會發生你所說的例外,或許你可以改成下列的程式碼試試看。

    string[][] classes = new string[][]{
    new string[] { "A", "B" },
    new string[] { "C", "D", "E" },
    new string[] { "F", "G" }};
    for (i = 0; i < classes.GetLength(0); i++)
    {
    	for (j = 0; j < classes[i].GetLength(0); j++)
    	{
    		output += classes[i][j] + "\t"; // 索引在陣列的界限之外 
    		output += "\r\n";
    	}
    	
    }


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月23日 上午 09:24

所有回覆

  • 把內部for迴圈最後的分號拿掉試試

    2012年3月23日 上午 08:28
  • 內層迴圈多了一各分號

    for (j = 0; j < classes[i].GetLength(0); j++); //<---- 多了一各分號

    把他拿掉就可以了


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2012年3月23日 上午 08:30
  • 因為你第二個迴圈多了一個分號,導致output += classes[i][j]的j,永遠都等於classes[i].GetLength(0),而index又是以0為基礎的,j的最大值應該是classes[i].GetLength(0)-1, 所以會發生你所說的例外,或許你可以改成下列的程式碼試試看。

    string[][] classes = new string[][]{
    new string[] { "A", "B" },
    new string[] { "C", "D", "E" },
    new string[] { "F", "G" }};
    for (i = 0; i < classes.GetLength(0); i++)
    {
    	for (j = 0; j < classes[i].GetLength(0); j++)
    	{
    		output += classes[i][j] + "\t"; // 索引在陣列的界限之外 
    		output += "\r\n";
    	}
    	
    }


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月23日 上午 09:24