0

次の形式と内容の .txt ファイルがあります (スペースに注意してください)。

Apples   00:00:34
Jessica  00:01:34
Cassadee 00:00:20

それらを2D配列( holder[5][2])に格納し、同時にそれらをに出力したいJTable。Javaでファイルを読み書きし、読み込んだファイルを配列に入れる方法はすでに知っています。ただし、このコードを使用すると:

   try {

        FileInputStream fi = new FileInputStream(file);
        DataInputStream in = new DataInputStream(fi);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));

        String line = null;
        while((line = br.readLine()) != null){
            for(int i = 0; i < holder.length; i++){
                for(int j = 0; j < holder[i].length; j++){
                    holder[i][j] = line;
                }  
            }
        }

        in.close();


        } catch(Exception ex) {
            ex.printStackTrace();
        }

私のholder[][]配列は JTable としてうまく出力されません :| 助けてください?私を助けてくれる人に感謝します!

編集:また、これを行うことは可能Scannerですか?私はスキャナーをよりよく理解しています。

4

1 に答える 1

2

必要なものは次のようなものです。

int lineCount = 0;
int wordCount = 0;
String line = null;
        while((line = br.readLine()) != null){
            String[] word = line.split("\\s+");
            for(String segment : word)
            {
                holder[lineCount][wordCount++] = segment;                    
            }
            lineCount++;
            wordCount = 0; //I think now it should work, before I forgot to reset the count.
        }

このコードはテストされていませんが、一般的なアイデアが得られるはずです。

編集:\\s+は、スペースでもタブでも、1 つ以上の空白文字を表すために使用される正規表現です。技術的には、正規表現は単純ですが、はエスケープ文字 Java であるため\s+、余分なスペースを追加する必要があるため、エスケープする必要があるため、余分な. プラスは、1 つ以上を表す単純な演算子です。\\

Scanner2番目の編集:はい、次のようにしてこれを行うこともできます:

Scanner input = new Scanner(new File(...));
while ((line = input.next()) != null) {...}
于 2012-04-06T13:59:07.420 に答える