2013-05-13 1 views
0

나는 텍스트 파일에있는 정수로 배열을 채워야한다. 각 줄의 정수를 가져 와서 배열에 넣기 위해 파일 판독기가 필요하지만 배열을 복제 할 수 없다. 복잡한, 그리고 중복, 나는 다른 텍스트 파일 예 : sorted.txt에 그들을 써야만, 나는 그것을 이해할 수있는 모든 첫 해에만 나는 대학에서 그 일을하는 방법. 누군가가 감사한다면 감사 할 것입니다. 여기 파일 판독기 Java를 사용해야 할 때 txt 파일에서 배열을 채우는 방법은 무엇입니까 ??

사전

에 감사드립니다 내가 가지고 어떻게 여기까지하고 그게 일을 마지막 6 일 정맥 무관 내 방법

public static void readFromfile()throws IOException { 
    List<String> lines = new ArrayList<String>(); 
    BufferedReader reader = null; 
    try { 
    reader = new BufferedReader(new FileReader("file.txt")); 
    String line = null; 
    while ((line = reader.readLine()) != null) { 
     lines.add(line); 
    } 
} finally { 
    reader.close(); 
} 
int[] array = lines.toArray();// i keep getting incopatible type error in this line 
awell 

지금까지 가지고 무엇 :(

+0

텍스트 파일의 각 줄에는 1 개의 int가 포함됩니까? –

+0

SortedSet을 사용하십시오. – commit

+0

첫 번째 실수는 문자열 목록을 int 배열로 변환하는 것입니다. int [] array = lines.toArray(); –

답변

2
int[] array = lines.toArray();// i keep getting incopatible type error in this line 
당신이 물론

는, List<String>#toArrayObject[] 아닌 int[] 반환합니다. :-)

이상적으로 목록을 List<int> (또는 숫자가 실제로 클 경우 List<long>)으로 선언하여이 작업을 수행 할 수 있습니다. 불행히도 적어도 Java 6에서는이를 수행 할 수 없으므로 대신 List<Integer>/List<Long>을 사용해야합니다. 그래서 그것이 당신의 출발점입니다.

그런 구문 분석 문자열에서 숫자 (예를 들어, line에서) 당신이가는대로. Integer.parseInt (또는 Long.parseLong)이 구문 분석을 수행 할 수 있습니다. 결과는 각각 intlong이지만 목록에 추가하면 자동 완성됩니다.

또는, 당신은 Scanner class "... 정규 표현을 사용해 원시 형 및 캐릭터 라인의 구문 분석이 가능한, 단순한 텍스트 스캐너 ..."

int[]의 최종 배열을 얻으려면 볼 수 있습니다 (예를 들어) List<Integer> 목록에서 약간의 고통이 있습니다. 당신이 대신 Integer[] 사용할 수 있습니다 (그리고 대부분의 수, 오토 박싱/언 박싱 덕분에), 즉 쉬운 경우 Integer[] numbers = yourList.toArray(new Integer[yourList.size()]);

당신이 정말로 대신 int[]이 필요하면, 당신은 그것을 복사 루프를 작성해야하거나 사용하는 것 Apache Commons toPrimitive method과 같은 것입니다.

0

스캐너 클래스를 사용하면 더 쉽게 작업 할 수 있습니다.

List<Integer> numbers = new ArrayList<Integer>(); 
Scanner s = new Scanner(new FileInputStream("file.txt")); 

while (s.hasNextInt()) { 
    numbers.add(s.nextInt()); 
} 
0

귀하의 문제는 당신이 List of Strings을하고는 int array로 그것을 설정하는 시도이다.

as T.J. Crowder는 지적했으나 List<int>을 가질 수 없습니다. 래퍼 클래스 Integer을 사용해야합니다.

그래서 List<Integer>에 목록을 변경 한 다음 내가 스캐너 클래스를 사용하는 것이 좋습니다 lines.add(Integer.parseInt(line));

0

, 그것은 당신이하고있는 것보다 더 쉽게 될 것입니다. 개체를 정수 유형에 할당하기 때문에 오류가 발생했습니다.