2015-02-05 2 views
1

Представьте, что сканер передает любой ввод строки, такой как «11 22 a b 22», и метод должен рассчитать общую сумму всех чисел (55 для примера упоминания). Я кое-что закодировал, но я не могу пропустить строки. Может ли кто-нибудь помочь мне в этом?Номера только для чтения из сканера

System.out.println("Please enter any words and/or numbers: "); 
String kbdInput = kbd.nextLine(); 
Scanner input = new Scanner(kbdInput); 
addNumbers(input); 

public static void addNumbers(Scanner input) { 
    double sum = 0; 
    while (input.hasNextDouble()) { 
     double nextNumber = input.nextDouble(); 
     sum += nextNumber; 
    } 
    System.out.println("The total sum of the numbers from the file is " + sum); 

} 
+0

Это очень похоже на http://stackoverflow.com/questions/2367381/extract-numbers-from-a-string-java - это решение, скорее всего, сработает для вас –

ответ

7

Чтобы иметь возможность обойти без числового ввода, вы должны иметь свой взгляд while петли для каких-либо токенов еще на потоке, а не только double с.

while (input.hasNext()) 

Затем, внутри, петля while см, если следующий маркер является double с hasNextDouble. Если нет, вам все равно нужно использовать токен с вызовом next().

if (input.hasNextDouble()) 
{ 
    double nextNumber = input.nextDouble(); 
    sum += nextNumber; 
} 
else 
{ 
    input.next(); 
} 
Смежные вопросы