0

Java でファイルを読み取る際に問題が発生し、各要素を 2 つの配列に保存します。私のtxtはこのように作られています

2,3
5
4
2
3
1

ここで、最初の行は 2 つの配列 A=2 と B=3 の長さで、次に各配列の要素です。それらを A と B に保存し、その長さで配列を初期化する方法がわかりません。最後に、各配列は A=[5,4] B=[2,3,1] になります

public static void main(String args[])
      {
        try{
// Open the file that is the first 
// command line parameter

            FileInputStream fstream = new FileInputStream("prova.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
//Read File Line By Line
            while ((strLine = br.readLine()) != " ")   {
                String[] delims = strLine.split(",");
                String m = delims[0];
                String n = delims[1];
                System.out.println("First word: "+m);
                System.out.println("First word: "+n);
            }
//Close the input stream
            in.close();
            }catch (Exception e){//Catch exception if any
                System.err.println("Error: " + e.getMessage());
                }
        }
    }

これは私が作ったものです..私はSystem.out.printlnを使用しました....コンソールに印刷するだけでいいのです...誰かが私を助けてくれますか、アドバイスをください。前もって感謝します

4

2 に答える 2

1

繰り返しますが、大きな問題を小さなステップに分割し、各ステップを解決してください。

  1. 最初の行を読みます。
  2. 最初の行を解析して、2 つの配列のサイズを取得します。
  3. 配列を作成します。
  4. 最初の配列 length 回ループし、最初の配列を埋めます。
  5. 2 番目の配列 length 回ループし、2 番目の配列を埋めます。
  6. finally ブロックで BufferedReader を閉じます (必ず try ブロックの前に宣言してください)。
  7. 結果を示す。
于 2013-08-18T00:34:30.690 に答える
0

この回答を@Hovercraftの回答で概説されている手順と一致させてください

String strLine = br.readLine(); // step 1

if (strLine != null) {
  String[] delims = strLine.split(","); // step 2

  // step 3
  int[] a = new int[Integer.parseInt(delims[0])];
  int[] b = new int[Integer.parseInt(delims[1])];

  // step 4
  for (int i=0; i < a.length; i++)
    a[i] = Integer.parseInt(br.readLine());

  // step 5
  for (int i=0; i < b.length; i++)
    b[i] = Integer.parseInt(br.readLine());

  br.close(); // step 6

  // step 7
  System.out.println(Arrays.toString(a));
  System.out.println(Arrays.toString(b));
}

に電話しbr.close()ました。in.close()内側のストリームのみを閉じているので、まだBufferedReader開いています。ただし、外側のラッパー ストリームを閉じると、ラップされたすべての内側のストリームが自動的に閉じられます。このようなクリーンアップ コードは、常にfinallyブロックに入れる必要があることに注意してください。

また、チェーンにDataInputStreamandを含める必要はありません。直接InputStreamReaderラップBufferedReaderするだけです。FileReader

これらすべてのクラスで少し混乱している場合。Streamクラスはバイトレベルでの読み取りに使用され、クラスは文字レベルでの読み取りに使用されることを覚えておいてReaderください。したがって、ここでは s だけが必要Readerです。

于 2013-08-18T00:37:44.840 に答える