-1

以下のコードを使用して、CSV ファイルを Javaのメインメソッドに読み込むことができます。

私が達成したいのは、私のメインメソッドではないメソッドで以下のコードを使用できるようにすることです。mainからこのメソッドを呼び出せるようにして、このすべてのコードがmainを乱雑にすることなく CSV ファイルを読み取れるようにしたいと考えています。どうすればいいですか?

参考までに、CSV ファイルには 2 列の double があるため、double [][].

public static void main(String[] args) throws IOException {

    double [][] data = new double [100][2];    
    File file = new File("C:\\Users\\Username\\Java\\Test2\\First\\src\\Program1\\prac.csv");
    int row = 0;
    int col = 0;
    BufferedReader bufRdr  = new BufferedReader(new FileReader(file));
    String line = null;


    //read each line of text file
    while((line = bufRdr.readLine()) != null && row < data.length) {
        StringTokenizer st = new StringTokenizer(line,",");
        while (st.hasMoreTokens()) {
            //get next token and store it in the array
            data[row][col] = Double.parseDouble(st.nextToken());
            col++;
        }
        col = 0;
        row++;
    }

}
4

4 に答える 4

0

それを新しいメソッドに移動するだけです。

public static double[][] readData(String fName){
    double [][] data = new double [100][2];    
    File file = new File(fname);
    int row = 0;
    int col = 0;
    BufferedReader bufRdr  = new BufferedReader(new FileReader(file));
    String line = null;


    //read each line of text file
    while((line = bufRdr.readLine()) != null && row < data.length) {
        StringTokenizer st = new StringTokenizer(line,",");
        while (st.hasMoreTokens()) {
            //get next token and store it in the array
            data[row][col] = Double.parseDouble(st.nextToken());
            col++;
        }
        col = 0;
        row++;
    }

    return(data);
}

静的であるため、クラスをインスタンス化せずにメインから呼び出すことができます。

于 2013-09-01T06:56:46.930 に答える
0

あなたのコードに関しては非常に簡単だと思います。readCSV という別のメソッドを作成してデータを返すだけで、メイン メソッドで readCSV を呼び出すことができます。readCSV 内のコードは、現在 main メソッドで行っていることとまったく同じです。

ところで、作業が終了した後にリーダーを閉じておらず、メインの戻り値の型が無効、つまり何もないはずなのに、メインメソッドで値を返そうとしていることに気付きました。

于 2013-09-01T06:56:47.523 に答える
0

これを試して:

public static void main(String[] args) throws IOException {
    double[][] data = readFile("C:\\Users\\Username\\Java\\Test2\\First\\src\\Program1\\prac.csv");
}

public static double[][] readFile(String filepath) throws NumberFormatException, IOException {
    double[][] data = new double[100][2];
    File file = new File(
            filepath);
    int row = 0;
    int col = 0;
    BufferedReader bufRdr = new BufferedReader(new FileReader(file));
    String line = null;

    // read each line of text file
    while ((line = bufRdr.readLine()) != null && row < data.length) {
        StringTokenizer st = new StringTokenizer(line, ",");
        while (st.hasMoreTokens()) {
            // get next token and store it in the array
            data[row][col] = Double.parseDouble(st.nextToken());
            col++;
        }
        col = 0;
        row++;
    }

    return (data);
}
于 2013-09-01T06:57:01.070 に答える