2014-11-19 8 views
2

Я использую eclipse; Мне нужно прочитать целые числа из текстового файла, который может содержать много строк чисел, разделенных пробелом: 71 57 99 ... Мне нужно получить эти цифры как 71 и 57 ... но мой код производит числа в диапазоне от 10 до 57java читать целые числа из текстового файла

int size = 0; 
    int[] spect = null; 
    try { 
     InputStream is = this.getClass().getResourceAsStream("/dataset.txt"); 
     size = is.available(); 
     spect = new int[size]; 
     for (int si = 0; si < size; si++) { 
      spect[si] = (int) is.read();// System.out.print((char)is.read() + " "); 
     } 
     is.close(); 
    } catch (IOException e) { 
     System.out.print(e.getMessage()); 
    } 

ответ

0

Вы можете преобразовать его в BufferedReader и читать и разделить строки.

BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line; 
while((line = br.readLine()) != null) { 
    String[] strings = line.split(" "); 
    for (String str : strings) { 
     Integer foo = Integer.parseInt(str); 
     //do what you need with the Integer 
    } 
} 
+0

Никто не сказал, что между каждой парой чисел есть новые строки. – Artur

+0

Но это не обязательно. В этом вопросе говорится, что между ними есть пробел, поэтому я использовал 'line.split (" ")'. Но если во входном файле есть несколько строк, обработает 'br.readLine()' в цикле while. – brlaranjeira

+0

Действительно, вы правы – Artur

2

read() читает только byte, а затем вы конвертируете в int значения, вам необходимо построчно с помощью BufferedReader, а затем split() и Integer.parseInt()

0

вы считали ли с помощью сканера, чтобы сделать это читать? Сканер может принимать имя файла в качестве параметра и может легко считывать каждый отдельный номер.

InputStream is = this.getClass().getResourceAsStream("/dataset.txt"); 
int[] spect = new int[is.available()]; 
Scanner fileScanner = new Scanner("/dataset.txt"); 

for(int i = 0; fileScanner.hasNextInt(); i++){ 
    spect[i] = fileScanner.nextInt(); 
} 
+0

это возвращает все нули – kobosh

+0

Я только что заметил, что в коде была ошибка. Вы поймали это и исправили его? Если нет, возможно, стоит попробовать еще раз. – Stromata

Смежные вопросы