2016-01-21 49 views
3

该程序生成随机二维数组并计算每行中的最大值。我确实有正确的结果,但如果列数不等于行数,则弹出IndexOutOfRangeExceptionC#System.IndexOutOfRangeException但程序正在运行

Random r = new Random(); 

int x,y; 

Console.WriteLine("lines"); 
x = int.Parse(Console.ReadLine()); 

Console.WriteLine("columns"); 
y = int.Parse(Console.ReadLine()); 

if ((x < 1) || (y < 1)) 
{ 
    Console.WriteLine("Error"); 
    Console.ReadLine(); 
} 
else 
{ 
    int[,] array1 = new int[x, y]; 

    int[] array2 = new int[y]; 

    for (int i = 0; i < x; i++) 
    { 
     for (int j = 0; j < y; j++) 
     { 
      array1[i, j] = r.Next(0, 51); 
      Console.Write(array1[i, j] + " "); 

     } 
     Console.WriteLine(); 
    } 

    for (int j = 0; j < y; j++) 
    { 
     int max = array1[j, 0]; 

     for (int i = 1; i < x; i++) 
     { 
      if (array1[j, i] > max) 
      { 
       max = (array1[j, i]); 
      } 
      else 
      { 

      } 
     } 
     array2[j] = max; 
     Console.WriteLine(); 
     Console.Write(array2[j]); 
    } 

    Console.ReadLine(); 
} 
+2

哪一行抛出异常?你想要做什么? – David

回答

5

关于你的第二次通过的数据(一个你去哪里首先而不是列线),这样的:

if (array1[j, i] > max) 
{ 
    max = (array1[j, i]); 
} 

应该是这样的:

if (array1[i, j] > max) 
{ 
    max = (array1[i, j]); 
} 

更改处理行和列的顺序不会更改数组的维数。

编辑:每@ csharpfolk的评论,这条线还需要固定:

int max = array1[j, 0]; 

可能是:

int max = array1[0, j]; 
+1

行'int max = array1 [j,0];'也应该修正 – csharpfolk

相关问题