2009-09-12 5 views
5

에는 다음이 포함Java에서 형식이 지정된 입력을 읽으려면 어떻게해야합니까? 내 입력 파일을 가정

3 4 5 6 7  8 
9 


10 

가 나는 각각의 각 반복 후 3,4,5,6,7,8 10을 얻을 수 있도록, while 루프를 실행하고 정수를 읽고 싶어 고리.

try { 
      DataInputStream out2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); 

      int i=out2.read(); 
      while(i!=-1){ 
       System.out.println(i); 
       i=out2.readInt(); 
      } 

    } catch (IOException ex) { 

    } 

와 내가 얻을 것은 :

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

나는이 코드를 시도 ... C/C++에서가 아니라 자바에서 할 정말 간단합니다 에있는 정수를 어떻게 읽습니까?

+1

를 참고하시기 바랍니다 :의 DataInputStream 텍스트, 바이너리를하지 읽기위한 것입니다. –

+0

그래서 자바 솔루션이 C++보다 더 쉬워 졌는가? –

+0

나를 위해 C에서 입력을 읽는 것이 더 쉽습니다. 특별히 파일에 숫자, 문자열, 수레 등 모든 종류의 데이터가 포함되어 있습니다. – Lazer

답변

15

하나는 Scanner 클래스와 그 nextInt 방법을 사용할 수 있습니다 :

Scanner s = new Scanner("3 4  5 6"); 

while (s.hasNext()) { 
    System.out.println(s.nextInt()); 
} 

출력 :

3 
4 
5 
6 

는 기본적으로 기본적으로 Scanner 객체가 공백을 무시하고 다음 토큰을 얻을 것이다.

InputStream을 문자 스트림의 소스로 사용하므로 문자 소스를 여는 FileInputStream을 사용할 수 있습니다.

는 다음과 같이 위의 예에서 Scanner 인스턴스를 교체 :

Scanner s = new Scanner(new FileInputStream(new File(filePath))); 
+0

감사합니다. 그것은 작동합니다! – Lazer

관련 문제