2009-09-12 33 views
5

Giả sử tập tin đầu vào của tôi chứa:Làm cách nào để đọc đầu vào được định dạng trong Java?

3 4 5 6 7  8 
9 


10 

Tôi muốn chạy một vòng lặp while và đọc số nguyên, vì vậy mà tôi sẽ nhận được 3,4,5,6,7,8 và 10 tương ứng sau mỗi lần lặp của vòng lặp.

Điều này thực sự đơn giản để làm trong C/C++ nhưng không phải trong Java ...

Tôi đã thử mã này:

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) { 

    } 

và những gì tôi nhận được là:

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

Làm cách nào để đọc các số nguyên từ tệp này trong Java?

+1

FYI: DataInputStream là để đọc nhị phân, không phải văn bản. –

+0

Vì vậy, giải pháp java đã trở nên dễ dàng hơn C++ hay khó hơn? –

+0

đối với tôi, đầu vào đọc trong C vẫn dễ dàng hơn, đặc biệt là nơi tệp chứa tất cả các loại dữ liệu - số, chuỗi, phao nổi, vv .. – Lazer

Trả lời

15

Người ta có thể sử dụng lớp Scanner và phương pháp nextInt của nó:

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

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

Output:

3 
4 
5 
6 

Về cơ bản theo mặc định, các đối tượng Scanner sẽ bỏ qua bất kỳ khoảng trắng, và sẽ có mã thông báo tiếp theo.

Scanner class as a constructor lấy mã nguồn cho dòng ký tự, vì vậy, có thể sử dụng FileInputStream để mở nguồn của văn bản.

Thay Scanner instantiation trong ví dụ trên như sau:

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

cảm ơn rất nhiều! nó hoạt động! – Lazer

Các vấn đề liên quan