Java 在循环中间创建一个新的起点

Java 在循环中间创建一个新的起点,java,arrays,loops,Java,Arrays,Loops,我必须从这两个阵列中创建一个新的二维阵列: CViEbee[][] 1 2 3 4 1 2 2 1 3 2 4 1 Hdeg[] 1 9 9 9 9 1 新数组(QST)使用由1到6的数字组成的CViEbee元素(如果存在),然后使用它们访问Hdeg中的索引。它将如下所示: QST[][] 10 10 9 9 0 0 10 10 9 9 0 0 我试着写程序,但还是错了。代码如下: int y; d

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

CViEbee[][]

1 2   3   4   1   2

2 1   3   2   4   1
Hdeg[]

1 9   9   9   9   1
新数组(
QST
)使用由1到6的数字组成的
CViEbee
元素(如果存在),然后使用它们访问
Hdeg
中的索引。它将如下所示:

QST[][]

10    10  9   9   0   0

10    10  9   9   0   0
我试着写程序,但还是错了。代码如下:

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();
inty;
双x=0//(Hdeg和QST为双倍)
int i,j,k,l;
对于(i=0;i<2;i++){
y=1;
对于(j=0;j<6;j++){
如果(CViEbee[i][j]==y)x=x+Hdeg[j];
k=0;
如果(j==6){
QST[i][k]=x;
系统输出打印(QST[i][k]);
}
}
j=0;
y++;
x=0;
}
System.out.println();
有人能帮我吗:)

一些缺陷/问题

  • 第一个内部if语句没有块(
    {
    }
    可能缺失)
  • 第二个内部
    if
    语句的条件永远不会是
    true
    j
    此时不能是6
  • 不需要在末尾附近进行赋值
    j=0
  • 您不需要
    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();
    }
    
    int[][]cv=newint[][{{1,2,3,4,1,2},{2,1,3,2,4,1};
    int[]hd=新的int[]{1,9,9,9,1};
    int[][]q=新int[2][6];
    对于(int行=0;行<2;行++){
    
    对于(int x=1;x,我使用y来查找我想要在CViEbee中找到的数字(1到6),因此在找到CViEbee中的1之后,它会增加到2,依此类推。@Henni也不要在循环之外声明循环变量(int I=0;…),这将帮助您避免可能不太明显的问题
    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();
    }