2017-11-30 28 views
1

그래서 현재 작업 디렉토리에있는 텍스트 파일에 포함 된 좌표를 읽는 프로그램을 작성해야합니다. 내 질문은 텍스트 파일을 읽은 후에 해당 좌표를 저장할 Point 개체 배열을 만드는 방법입니다.텍스트 파일에서 루프까지 좌표 읽기?

: 이것은 당신이 사전에 읽고 얼마나 많은 포인트를 당신이 모르는 경우


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을 사용할 수 있습니다 .. 지금까지 파일과 while 루프를 읽고 내 코드입니다 선언하고 while 루프 전에 초기화 :

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

을 그리고 루프를 사용 arraylist.add(point);에에 점을 추가 할 수 있습니다. 당신이 정말로 배열을 필요로하는 경우 마지막에서

, 당신은 사용하여 ArrayList를 변환 할 수 있습니다 :

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

+0

그래서 위의 방법으로 배열의 좌표를 저장하기 위해 main에있는 파일을 어떻게 부르겠습니까? 메소드를 호출하고 파일 이름을 전달하면됩니까? –

+1

코드에있는 것처럼 코드를 호출 할 수 있습니다. 배열을 초기화하는 대신 앞서 언급 한 배열 목록을 사용합니다. 결국 배열 목록을 배열로 변환 할 수 있습니다. – clinomaniac

+0

배열 [i] = new Point (x, y) 아래에 오류 기호가 표시되지 않는 이유가 무엇입니까? –