我必须从这两个数组创建一个新的二维数组:
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();
有人可以帮我吗:)
最佳答案
一些缺陷/问题
- 第一个内部 if 语句没有 block (
{
和}
可能丢失) - 第二个内部
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();
}
不是最有效的解决方案(需要三个嵌套循环),但至少有一个起点;)
(顺便说一句:you can test it here in ideone)
关于java - 在循环中间创建一个新的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726547/