在10x10二维数组中完成的数学计算不正确

时间:2013-04-01 13:29:53

标签: java arrays

我设置了一个二维数组,10乘10,每个插槽的(x * y)表示各自的位置。我正在尝试将第3列,第5列和第7列中的所有数字相加到cTotal中,并将第2,4和6行中的所有数字相加到rTotal中。我的编码似乎很合理,但我似乎无法使其正常工作。有什么想法吗?

public static void arrayMath()
{
    int cTotal = 0;
    int rTotal = 0;
    //int tDiffValue = (rTotal - cTotal);

    int twodimarr[][] = new int[10][10];

    int row = 10; 
    int col = 10;
    int x = 0;
    int y = 0;

    for(x = 0; x < row; x++)
    {
        for(y = 0; y < col; y++)
        {
            twodimarr[x][y] = x*y;
        }
    }

    for(x = 0; x < row; x++)
        {
        for(y = 0; y < col; y++)
            {
            if( (x+y) < col )
            {
        //System.out.print( " " );
        }
    //System.out.print(" " + (twodimarr[x][y]));
    }
    //System.out.println();
    }

    for(x = 0; x < twodimarr.length; x++)     //Problems start down here.
      {
        for( y= 0; y<twodimarr.length; y++)
        {
            if(y == 2 || y == 4 || y == 6)
            {
            rTotal = ((rTotal + twodimarr[x][y]));
            }
        }
      }
      System.out.println("rTotal is " + rTotal + ".");

      for(x = 0; x < twodimarr.length; x++)
      {
          for(y = 0; y < twodimarr.length; y++)
          { 
             if(x == 3 || x == 5 || x == 7)
             {
             cTotal = ((cTotal + twodimarr[x][y]));
             }
          }
      }
      System.out.print("cTotal is " + cTotal + "."); 

}

2 个答案:

答案 0 :(得分:1)

x == 3不是第三列,它是第4列(0,1,2,3)。这意味着它是3 * 0,3 * 1等的列,并且675/540数字在这种情况下是正确的。

答案 1 :(得分:0)

数组索引从0开始。要获取所需的行/列,您需要从要检查的数字中减去1。对于行2,4,6,检查y == 1,3,5。对于第3,5,7行,检查x == 2,4,6。