我试图制作一个接收矩阵并打印其线条的方法。例如:
line nb 1 : 3 2 5 6
line nb 2 : 7 9 0 1 4 3
line nb 3 : 3 5 3
我想知道为什么我不能使用此代码打印给定矩阵的行。而且,为什么我不能递增变量k
,这显示了行的编号。
当我运行此代码时,它不会增加k
。它始终显示行
1
如何修复我的代码?
public static void PrintLine(int[][] matrix){
for (i = 0; i < matrix.length; ++i){ // Loop all long the lines of the matrix
int k = 1; // Number of the line
System.out.print("Line nb " + k + matrix[i]);
k = k+1; // Increment the number of the line by 1
}
}
答案 0 :(得分:1)
k
并没有增加;相反,只增加k
以立即丢弃它,因为变量k
的范围仅限于一次迭代(即,在花括号内)。以下应该有效:
for (int i = 0, k = 0; i < matrix.length; ++i, ++k) {
/* work in terms of i and k */
}
在您的情况下,简化为使用i
和k
用于相同目的:
for (int i = 0; i < matrix.length; ++i) {
System.out.print("Line nb " + i + matrix[i]");
}
答案 1 :(得分:0)
您的k
变量在for
循环内初始化。这意味着在每次迭代时它都是新的变量。初始值为1。
将它的itialization移出循环:
int k = 1; // Number of the line
for (i = 0; i < matrix.length; ++i){ // Loop all long the lines of the matrix
答案 2 :(得分:0)
正如其他人指出k
的范围不正确,您只需使用i
的值,当您打印阵列时,您将获得对象参考详细信息,您可以使用Arrays.toString()
从数组中打印值。
for (int i = 0; i < matrix.length; ++i) {
System.out.print("Line nb " + i +": "+ Arrays.toString(matrix[i]));
}