2014-10-14 1 views
0

Скажите, что мне дана строка вроде (1 5 23 100 90).Как извлечь целые числа из строки и добавить их вместе в Java без метода split/array?

Как извлечь их, преобразовать их в целые числа и затем добавить их вместе?

Я верю, что Integer.parseInt (String) преобразует их в целые числа, но у меня возникают проблемы с их извлечением.

Вот мой псевдокод:

1) Хранить целые.

2) Остановитесь, когда есть место.

3) Повторите шаги 1-2 (так возможно петлю?)

4) Затем преобразовать их в целые числа, потому что они по-прежнему рассматривается как строка.

5) Добавьте их все вместе.

+0

Почему вы не можете использовать 'split'?' Split' правильно. Он уверен, что можно сделать это один символ за один раз (подсказка), но это глупо. – Radiodef

+0

Будут ли только целые числа или вы ожидаете, что строки будут присутствовать случайным образом между ними? В любом случае вы можете проверить, что класс сканера в java http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html – ucsunil

+0

Я понимаю, что метод split будет работать, потому что он еще не преподавался в классе, мне не разрешено использовать этот метод. – shortbussnail

ответ

2

Используйте класс сканера java. Это поможет вам с разделителями (в вашем случае пространства и «(» и «)» символов.

Scanner s = new Scanner(input).useDelimiter(WHATEVER_DELIMITERS_YOU_NEED); 
sum = 0; 
while(true) { 
    sum += s.nextInt(); 
    if(!s.haNext()) 
     break; 
} 
0

Это должно сделать трюк ... предполагается, что вы разрешили использовать шаблоны

public int printSum(String str) { 
    Scanner scan = new Scanner(str); 
    int sum = 0; 

    // tell the scanner to use "(", " ", or ")" as a delimeter 
    scan.useDelimiter("(\\(|\\s|\\))"); 

    while (scan.hasNext()) { 
     try { 
      sum += scan.nextInt(); 
     } 
     catch (Exception ex) { 
      // if input is unable to be parsed. 
      ex.printStackTrace(); 
     } 
    } 

    return sum; 
} 
0

Там в конструктор Scanner, который принимает String в качестве аргумента, и позволяет использовать Scanner для чтения из String.

Возможно, вы захотите ознакомиться с начальным знаком (. После этого вы можете повторно позвонить hasNextInt и nextInt, пока hasNextInt не вернет false. Добавьте значения int, возвращенные nextInt, как вы идете.

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