2017-11-30 14 views
1

私は現在の作業ディレクトリにあるテキストファイルに含まれている座標を読んでいるところにプログラムを書く必要があります。私の質問は、テキストファイルを読み込んだ後、これらの座標を格納するPointオブジェクトの配列を作成する方法です。あなたは、あなたがArrayListを使用することができ、事前に読み込みますどのように多くのポイントがわからない場合はこれが...ファイルやwhileループを読み取るため、これまでテキストファイルからループに座標を読み込む?


try { 

    // create the file reader instance 
    FileReader fReader = new FileReader(fileName); 

    // create a scanner to scan through the file 
    Scanner scan = new Scanner (fReader); 

    // loop 
    while (scan.hasNext()) { 
      int i = 0; 
      int x = scan.nextInt(); 
      int y = scan.nextInt(); 
      array[i] = new Point(x,y); 

      i++; 
     } 


    // close the reader 
     fReader.close(); 
} catch (IOException e) { 
    System.out.println(e.getMessage()); 
    } 
} 
+2

配列は、あなたがそれにそれらを置くために必要なデータのサイズに初期化する必要があります。サイズがわからない場合は、すべてのデータを処理するのに十分な大きさのものを作成できますが、そのようにスペースを浪費しています。リストや別のコレクションを使用して、すべてのデータを読み込んだら、サイズを知ってから配列に変換することができます。 – clinomaniac

答えて

2

私のコードです:

ArrayList<Point> arraylist = new ArrayList<>();

そして、それにポイントを追加するには、ループを使用arraylist.add(point);中:whileループの前にそれを宣言し、初期化します。で、最後の

、あなたは本当にあなたが使用してのArrayListを変換することができ、アレイが必要な場合:

Point[] foo = arraylist.toArray(new Point[arraylist.size()]);

+0

したがって、上記の方法で配列の内部に座標を格納するには、mainのファイルをどう呼びますか?メソッドを呼び出してファイル名を渡すだけですか? –

+1

コード内にあるように、これを呼び出すことができます。配列を初期化する代わりに、前述のように配列リストを使用します。最後に、配列リストを配列に変換することができます。 – clinomaniac

+0

配列[i] = new Point(x、y)の下にエラーシンボルが見つかりません。 –

関連する問題