在Java主类中的一个类中设置数组的大小

时间:2018-08-18 10:01:40

标签: java arrays

A

我尝试设置2d数组start = '10/10/2018' pd.date_range(start, periods=10, freq='W-' + pd.to_datetime(start).strftime('%a')) DatetimeIndex(['2018-10-10', '2018-10-17', '2018-10-24', '2018-10-31', '2018-11-07', '2018-11-14', '2018-11-21', '2018-11-28', '2018-12-05', '2018-12-12'], dtype='datetime64[ns]', freq='W-WED') 的大小,但始终设置为零。

这给了我一个运行时错误-第13行的数组索引超出范围:

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int row=in.nextInt();
        int column=in.nextInt();
        Matrix a=new Matrix(row,column);
        for(int i=0;i<row;i++)
            for(int j=0;j<column;j++)
                a.entry[i][j]=in.nextFloat();
    }
}
class Matrix{
    int row,column;
    Matrix(int a,int b){
        row=a;
        column=b;
    }
    float[][] entry=new float[row][column];
}

1 个答案:

答案 0 :(得分:4)

问题是当您直接进行操作时:

float[][] entry=new float[row][column];
Matrix类中的

,其rowcolumn变量被更早地初始化为0entry的定义放在构造函数之后没关系,因为所有字段定义都在构造函数之前执行。

我们需要将用户的rowcolumn传递给Matrix类。

entry类的构造函数中初始化Matrix,例如:

class Matrix{
    int row,column;
    float[][] entry;
    Matrix(int a,int b){
        row=a;
        column=b;
        entry=new float[row][column];
    }
}