【问题标题】:Create a new start in middle of loop在循环中间创建一个新的开始
【发布时间】:2011-04-20 06:52:17
【问题描述】:

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

CViEbee[][]

1 2   3   4   1   2

2 1   3   2   4   1

高清度[]

1 9   9   9   9   1

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

QST[][]

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

我已经尝试编写程序,但它仍然是错误的。这是代码:

int y;
double x = 0; //(Hdeg and QST is double)
int i,j,k,l;

for (i = 0; i < 2; i++) {
    y = 1;
    for (j = 0; j < 6; j++) {
        if (CViEbee[i][j] == y) x = x + Hdeg[j];
        k = 0;
        if(j == 6) {
            QST[i][k] = x;
            System.out.print(QST[i][k]);
        }
    }
    j = 0;
    y++;
    x = 0;
}

System.out.println();

有人可以帮我吗,拜托:)

【问题讨论】:

    标签: java arrays loops


    【解决方案1】:

    一些缺陷/问题

    1. 第一个内部 if 语句没有块({} 可能缺失)
    2. 第二个内部if 语句的条件永远不会是true,此时j 不能为6
    3. 没有必要在末尾附近分配j=0
    4. 你不需要y,因为它总是等于i+1

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

    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

    【讨论】:

    • 我使用 y 在 CViEbee 中找到我想要的数字(1 到 6),所以在 CViEbee 中找到多少个 1 后,它会增加到 2,依此类推..
    • @Henni 也不要在 for(int i=0;...) 循环之外声明循环变量,这将帮助您避免可能不那么明显的问题
    猜你喜欢
    • 2021-11-04
    • 2012-09-27
    • 1970-01-01
    • 2011-10-22
    • 2021-08-11
    • 2020-01-26
    • 2016-10-17
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多