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

标签 java arrays loops

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

CViEbee[][]

1 2   3   4   1   2

2 1   3   2   4   1

Hdeg[]

1 9   9   9   9   1

新数组 ( QST ) 使用 CViEbee由 1 到 6 的数字组成的元素(如果存在),然后使用它们访问 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();

有人可以帮我吗:)

最佳答案

一些缺陷/问题

  1. 第一个内部 if 语句没有 block ({} 可能丢失)
  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)

关于java - 在循环中间创建一个新的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726547/

相关文章:

arrays - Excel for Mac 2011 : UBound() Not Working

java - Android - 如何合并两个 ArrayLists

performance - 加速删除工作表上隐藏行的代码

javascript读取前五个值

LiveData 的 Java 扩展方法

java - 通用返回类型?

java - 将字符串转换为日期 WebService 时出错

java - 使用 JTA 持久化上下文而不设置 hibernate.transaction.jta.platform

java - 在Java中将多个电话号码存储在单个数组中

javascript - 哈希表与数组,数组何时在性能上获胜?