2013-11-11 5 views
2

У меня есть текстовый файл numbers.txt с некоторыми линиями с номерами, разделенными запятой (\n не видно, конечно):Сложите числа из файла

1, 2, 3, 4, 5, \n 
6, 7, 8, 9, 10, \n 
11, 12, 13, 14, 15 

Я хочу прочитать и сложить их, так что общий результат будет 120.
Это мой код:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class App1 { 

    int res; 

    public App1() { 
    Scanner sc = null; 
     try { 
      sc = new Scanner(new File("numbers.txt")).useDelimiter(","); 
     } catch (FileNotFoundException ex) { 
      System.err.println(ex); 
     } 
     while (sc.hasNextInt()) { 
     res += sc.nextInt(); 
     } 
     System.out.println("Result: " + res); 
    } 

    public static void main(String[] args) { 
     App1 app = new App1(); 
    } 
} 

к сожалению, я получаю только первый номер:

Result: 1 
+0

Возможно, разделитель должен содержать пробелы: '', "' – Vertex

ответ

3

Попробуйте с useDelimiter("[,\\s]+"). В настоящее время вы заменяете стандартный разделитель \p{javaWhitespace}+ только с ,, что означает, что после обнаружения первого целого сканера будет

1,| 2, 3, 4, 5, \n 
    ^here 

так все последующие символы будут [space][digit]. Поскольку пространство больше не является разделителем и, безусловно, не является цифрой, эти данные не могут быть приняты в тесте hasNextInt().

2

Пробег: .useDelimiter("[,\\s]+");. Если вы используете разделитель (","), следующий символ является пробелом, и вы не можете использовать hasNextInt() на белом фоне.

+0

'\ s' allready включает' \ n': См. Http://www.vogella.com/articles/JavaRegularExpressions/article.html#regex_metacharacters – Vertex

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