0

私は本当にJavaが初めてです。Eclipse で作成した入力ファイルから値を取得しようとしており、それらを 2D 配列に保存しようとしています。入力は次のとおりです。

31 22 23 79

20 -33 33 1

3 -1 46 -6

通常の配列に問題なく保存できますが、何を試しても、上記の形式で2次元配列に保存する方法がわかりません。for ループを試してみましたが、ループの反復ごとに 12 個すべての数値が保存されました。変数を使用して、通常の配列のようにインクリメントしてみましたが、何も保存されませんでした。これを行う方法についてのヘルプがあれば、通常の配列のコードを以下に示します。以下を画面に出力します。

[31, 22, 23, 79, 20, -33, 33, 1, 3, -1, 46, -6]

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class ArrayMatrix2d {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    if (args.length == 0){
        System.err.println("Usage: java Sum <filename>");
        System.exit(1);
    }

    try {
        //int[][] matrix = new int[3][4];
        int MyMat[] = new int[12];
        int num = 0;

        //int row = 0;
        //int column = 0;
        BufferedReader br = new BufferedReader(new FileReader(args[0]));
        String line;
        while((line = br.readLine()) != null) {
            StringTokenizer st = new StringTokenizer (line);
            while (st.hasMoreTokens()){
                int value1 = Integer.parseInt(st.nextToken());
                MyMat[num] = value1;
                num++;              
            }
        }
        System.out.println(Arrays.toString(MyMat));
        br.close();
    }       
    catch(Exception e) {}           
}

}

4

3 に答える 3

1

Java 7 を使用している場合は、テキスト ファイルを にロードできますList。私が知っているように、これは String[][] を作成する最短の方法です

String[][] root;

List<String> lines = Files.readAllLines(Paths.get("<your filename>"), StandardCharsets.UTF_8);

lines.removeAll(Arrays.asList("", null)); // <- remove empty lines

root = new String[lines.size()][]; 

for(int i =0; i<lines.size(); i++){
  root[i] = lines.get(i).split("[ ]+"); // you can use just split(" ") but who knows how many empty spaces
}

これで、入力が完了しましたroot[][]

それがあなたを助けることを願っています

于 2013-10-05T11:31:23.867 に答える
1

あなたはmatrixこのようにあなたを作ることができます

int[][] matrix=new int[3][]; //if the number of columns is variable

int[][] matrix=new int[3][4]; //if you know the number of columns

そしてあなたが得るループで

 int i=0;
 while((line = br.readLine()) != null) {
        StringTokenizer st = new StringTokenizer (line);
        int num=0;
        //the next line is when you need to calculate the number of columns
        //otherwise leave blank
        matrix[i]=new int[st.countTokens()];
        while (st.hasMoreTokens()){
            int value1 = Integer.parseInt(st.nextToken());
            matrix[i][num] = value1;
            num++;              
        }
        i++;
 }
于 2013-10-05T11:32:01.450 に答える