在循环中间创建一个新的开始

时间:2011-04-20 06:52:17

标签: java arrays loops

我必须从这两个数组中创建一个新的2D数组:

  

CViEbee [] []

1 2   3   4   1   2

2 1   3   2   4   1
     

Hdeg []

1 9   9   9   9   1

新数组(QST)使用{1}个元素,这些元素包含1到6的数字(如果存在),然后使用它们来访问CViEbee中的索引。它看起来像这样:

  

QST [] []

Hdeg
10    10  9   9   0   0

10    10  9   9   0   0

我试过写程序但它仍然是错的。这是代码:

 QST[0][0] = 10 because, CViEbee[0][j]=1 if j=0 and j=4 then 
    QST[0][0] = Hdeg[0]+Hdeg[4] = 1+9 = 10
    QST[0][5] = 0 because, CViEbee[0][j]=6 --> no CViEbee element = 6

    QST[1][3] = 9 because, CViEbee[1][j] = 4 if j= 4 then

    QST[1][3] = Hdeg[4]= 9

请有人帮助我,请:)

1 个答案:

答案 0 :(得分:2)

一些缺陷/问题

  1. 第一个内部 if 语句没有块({}可能缺失)
  2. 第二个内部if语句的条件永远不会是truej此时不能为6
  3. 无需在结尾附近进行作业j=0
  4. 您不需要y,因为它始终等于i+1

  5. 这是一个有效的解决方案。请注意,我稍微更改了数组的名称,但您应该能够抓住这个想法并在代码中使用它:

    int[][] cv = new int[][]{{1,2,3,4,1,2},{2,1,3,2,4,1}};
    int[] hd = new int[]{1,9,9,9,9,1};
    int[][] q = new int[2][6];
    
    for (int row = 0; row < 2; row++) {
      for (int x = 1; x <= 6; x++) {
        for (int col = 0; col < 6; col++) {
          if (cv[row][col] == x) {
            q[row][x-1] += hd[col];
          }
        }
      }
    }
    
    for (int[] row:q) {
      for (int col:row) {
        System.out.print(col + "\t");
      }
      System.out.println();
    }
    

    不是最有效的解决方案(需要三个嵌套循环),但至少是一个起点;)

    (顺便说一句:you can test it here in ideone