就是测试一下两个数组相乘,程序怎么也看不出错误啊,怎么执行就出现E
xception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
问题在 result += a[i][k] * b[k][j];
怎么解决阿???package variant;class C{
    public static void main(String args[]) {
        int a[][] = { {1, 2, 3}, {4, 5, 6} , {7, 8, 9}};
        int[][] b=a.clone();
         b = new int[a.length][a[0].length];
        System.arraycopy(a, 0, b, 0, a.length); //通过arraycopy()函数拷贝数组
        b[0][0] = 4; //改变数组b[0][0]的值
        System.out.println("a[][]");
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println("b[][]");
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(b[i][j] + " ");
            }
            System.out.println();
        }
        //相乘
        int[][] c=new int[3][3];
        int result;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                result=0;
                for(int k=0;k<3;i++){
                    result += a[i][k] * b[k][j];
                }   
                c[i][j]=result;
            }
        }    
        System.out.println("c[][]");
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(c[i][j] + " ");
            }
            System.out.println();
        }    }
}

解决方案 »

  1.   

    "*"号在JAVA中还是任意字符串,是不可以作为比较符的
      

  2.   

    //相乘 
            int[][] c=new int[3][3]; 
            int result; 
            for (int i = 0; i < 3; i++) { 
                for (int j = 0; j < 3; j++) { 
                    result=0; 
                    for(int k=0;k <3;i++){ //应该是k++
                        result += a[i][k] * b[k][j]; 
                    }  
                    c[i][j]=result; 
                } 
            }    
      

  3.   

    LS的什么意思
    LZ,错误应该知道是什么吧?数组越界
    检查下                 result=0;
                    for(int k=0;k <3;i++){
                        result += a[i][k] * b[k][j];
                    } 
                    c[i][j]=result; 
      

  4.   

    for(int k=0;k <3;i++){
        result += a[i][k] * b[k][j];
    }  
    这里是i++吗?这里i++,i的值超过了3,数组越界了
    是不是应该是k++啊