当前位置: 代码迷 >> J2SE >> 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,小弟我觉得就应该是j<4 多谢
  详细解决方案

很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,小弟我觉得就应该是j<4 多谢

热度:64   发布时间:2016-04-23 20:42:52.0
很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4 谢谢
 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4   谢谢 

package Question1_7;    
public class Question1_7  
{  
    public static void setZeros(int[][] matrix){  
        int[] row=new int[matrix.length];  
        int[] column=new int[matrix[0].length];  
        for(int i=0;i<matrix.length;i++){  
            for(int j=0;j<matrix[0].length;j++){  
                if(matrix[i][j]==0){  
                    row[i]=1;  
                    column[j]=1;  
                }  
            }  
        }  
        for(int i=0;i<matrix.length;i++){  
            for(int j=0;j<matrix[0].length;j++){  
                if(row[i]==1||column[j]==1){  
                    matrix[i][j]=0;  
                }  
            }  
        }  
    }  
    public static void main(String[] args){  
        int[][] a={  
            {1,2,3,4},  
            {0,3,9,5},  
            {4,6,8,3},
            {4,6,8,3}
        };  
        //setZero(a);  
        setZeros(a);  
        for(int i=0;i<4;++i){  
            int j;  
            for(j=0;j<3;++j)  // 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4
                System.out.printf(a[i][j]+",");  
            System.out.println(a[i][j]);  
        }  
    }  
}  


 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4   谢谢 

原题:Write an algorithm such that if an element in an MxN matrix is 0, its entire row and
column are set to 0.

------解决方案--------------------
引用:
Quote: 引用:

for循环如果没有{}的话,只有下面一条语句是属于循环体的,最后的一句println不在循环体之中,执行完了循环之后j的值已经是4了。


谢谢  不过还是不明白 这一行for(int i=0;i<4;++i)     如果我改成i<3     矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 


真晕,说到这种程度你还是不理解?
把main函数里面改成这样你是不是就好理解了。

public static void main(String[] args) {
int[][] a = { { 1, 2, 3, 4 }, { 0, 3, 9, 5 }, { 4, 6, 8, 3 },
{ 4, 6, 8, 3 } };
// setZero(a);
setZeros(a);
for (int i = 0; i < 4; ++i) {
int j;
for (j = 0; j < 4; ++j)
// 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4
System.out.printf(a[i][j] + ",");
System.out.println();
}
}
  相关解决方案