Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量未初始化java_Java_Variables_Matrix_Initialization - Fatal编程技术网

变量未初始化java

变量未初始化java,java,variables,matrix,initialization,Java,Variables,Matrix,Initialization,第38行- pool.submit(new Multi(N,i,j,a,b,c)); 我有一个未初始化的变量j。我不确定出了什么问题,因为所有其他人都初始化了,这在过去的一个小时里一直困扰着我 有人能帮我纠正这个错误吗 public class Matrix1 { public final static int N = 4; //Random size of matrix public static void main(String[] args) throw

第38行-

pool.submit(new Multi(N,i,j,a,b,c));
我有一个未初始化的变量
j
。我不确定出了什么问题,因为所有其他人都初始化了,这在过去的一个小时里一直困扰着我

有人能帮我纠正这个错误吗

public class Matrix1 
{       
    public final static int N = 4; //Random size of matrix

    public static void main(String[] args) throws InterruptedException 
    {           
        long startTime = System.currentTimeMillis();

        //Create and multiply matrix of random size N.   
        double [][] a = new double [N][N];
        double [][] b = new double [N][N];
        double [][] c = new double [N][N];          
        int i,j,k;

        for(i = 0; i < N ; i++)
            for(j = 0; j < N ; j++)
            {
                a[i][j] = i + j;
                b[i][j] = i * j;
            }

        ExecutorService pool = Executors.newFixedThreadPool(1);

        for(i = 0; i < N; i++)
            for(j = 0; j < N; j++)
            {
                c[i][j] = 0;

                for(k = 0; k < N; k++)
                   c[i][j] += a[i][k] * b[k][j]; //C matrix calculated from a and B matrices.               
            }  

        pool.submit(new Multi(N,i,j,a,b,c));
        pool.shutdown();
        pool.awaitTermination(1, TimeUnit.DAYS);

        long endTime = System.currentTimeMillis();

        System.out.println("Calculation completed in " +
        (endTime - startTime) + " milliseconds");       
    }

    static class Multi implements Runnable 
    {
        final int N;
        final double [][] a;
        final double [][] b;
        final double [][] c;
        final int i;
        final int j;

        public Multi(int N, int i, int j, double[][] a, double[][] b, double[][] c)
        {
            this.N=N;
            this.i=i;
            this.j=j;
            this.a=a;
            this.b=b;
            this.c=c;
        }

        @Override
        public void run() 
        {
            for(int k = 0; k < N; k++) 
                c[i][j] += a[i][k] * b[k][j];
        }       
    }   
}
公共类矩阵1
{       
公共最终静态int N=4;//矩阵的随机大小
公共静态void main(字符串[]args)引发InterruptedException
{           
long startTime=System.currentTimeMillis();
//创建并乘以随机大小为N的矩阵。
double[]a=新的double[N][N];
双精度[][]b=新双精度[N][N];
double[]c=新的double[N][N];
int i,j,k;
对于(i=0;i
您试图访问其循环外部的虚拟变量
j
。请尝试以下代码:

for (i = 0; i < N; i++) {

    for (j = 0; j < N; j++) { 
        c[i][j] = 0;

        for (k = 0; k < N; k++) {
            c[i][j] += a[i][k] * b[k][j]; // C matrix calculated from a and B matrices.
        }

        pool.submit(new Multi(N,i,j,a,b,c));
        pool.shutdown();
        pool.awaitTermination(1, TimeUnit.DAYS);
    }
}
(i=0;i{ 对于(j=0;j第38行是哪一行?你真的希望我们在你的代码堆里数数行吗?数数行并不难,但我编辑了我的帖子。令人遗憾的是,问题在于堆栈溢出用户界面更难,因为格式化可能会导致前导行或尾随行丢失,并且您可能使用的IDE应该提供行号。是的。如果N为0,则不会将任何内容分配给
j
。在这种情况下,编译器是正确的。(请注意,添加
if(N>0)
检查不会修复错误,因为编译器不够聪明,不知道如何修复问题)因此,我如何解决这个问题:oCheers工作得很好!真不敢相信我错过了{