我正在用Java做一些示例,尝试将数组的值添加到矩阵的列中。但是问题是我不知道为什么矩阵没有变化:
例如: 输入:
array = 1 1 1 1
matrix = 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
输出应为:
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
这是我的代码:
public static void main(String[] args)
{
int col = 0, row = 0;
int [][]a = new int[4][4];
int[]temp = new int[4];
for( row = 0 ; row<4;row++)
{
for( col = 0 ; col<4 ;col++)
{
a[row][col] = 0;
}
}
for(row = 0; row<4;row++)
{
temp[row] = 1;
}
while(col<4)
{
for(row = 0; row <4; row++)
{
a[row][col] = temp[row];
}
row+=1;
}
for( row = 0 ; row<4;row++)
{
System.out.print(temp[row] + " ");
}
System.out.println();
for( row = 0 ; row<4;row++)
{
for( col = 0 ; col<4 ;col++)
{
System.out.print(a[row][col]+ " ");
}
System.out.println();
}
}
目前,矩阵仍为零。还有其他解决方法吗?
答案 0 :(得分:0)
请注意,这里:
while(col<4)
{
for(row = 0; row <4; row++)
{
a[row][col] = temp[row];
}
row+=1;
}
您要添加row + = 1,但是循环是关于cols的。这可能是意外行为的原因之一。
同时,由于使用的迭代器与以前使用的迭代器相同,因此永远不会执行此循环。 (cols已经从firs循环中== 4)
答案 1 :(得分:0)
您需要更改
col = 0;
for (row = 0; row < 4; row++) {
a[row][col] = temp[row];
}
到
{{1}}
答案 2 :(得分:0)
我假设您将知道必须用数组中指定的值替换哪一列(在您的情况下,这是第一列)
无论如何,while
循环中的值是不正确的,因为您使用的本地变量col
与早先的for循环已经为4,所以while循环永远不会执行。
用对诸如so-
int foo = 0; //initialize a new variable for the loop cycles
col = 0; // set the value of col to the column you want to replace
while (foo < 4)
{
for(row = 0; row <4; row++)
{
a[row][col] = temp[row];
}
row+=1;
foo++;
}
应该解决它。