2014-11-03 3 views
0

Для этой программы я беру ввод как строку со следующим форматом: имя, за которым следуют целые числа, разделенные пробелами. В серии может быть один или несколько целых чисел. Его выход заканчивается именем серии и ее суммой. Вот пример из того, что вывод должен быть:java-программа: добавление целых чисел из строки ввода строки

Series? seriesname 1 3 5 7 11 
sum(seriesname) = 27 

У меня возникли проблемы с моим кодом, он держит возникли проблемы с этой линии (исключение):

int number = Integer.parseInt(series.substring(start, space)); 

Я двигался довольно немного, но это то, что у меня есть прямо сейчас:

import java.util.Scanner; 

public class NamePlusAddingInts { 
    public static String series; 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Series? "); 

     series = scan.nextLine(); 
     String name = series.substring(0, series.indexOf(' ')); 

     System.out.print("Sum(" + name + ") = " + number); 
    } 
    public static int adding() { 
     int space = series.indexOf(' '); 

     while (space != -1) { 
      int start = space + 1; 
      int number = Integer.parseInt(series.substring(start, space)); 

      number = number + number; 
      space++; 
     } 
     return number; 
    } 
} 
+4

'У меня проблемы с моим кодом, он продолжает иметь проблемы с:' - в чем проблемы? – August

+0

Почему ваш код не работает? что такое ошибка/исключение? –

+0

Параметры 'подстроки' являются начальным символом и символом окончания (плюс 1). У вас есть что-то настроенное, так что начало всегда * после * конечного символа. Это не сработает. – ajb

ответ

1

Вы слишком задумываетесь об этом. У вас есть четкие разделители между вещами, которые вас интересуют, вы можете просто разделить строку на пробелы, взять первый элемент в качестве имени и сделать код гораздо понятнее, рассмотрим следующее:

String numbers = "name 5 20 26 4 2 13"; 
    String[] splitNumbers = numbers.split(" "); 

    int sum =0; 
    String name = splitNumbers[0] 

    for(int i = 1; i < splitNumbers.length ; i++){ 
     sum += Integer.parseInt(splitNumbers[i]); 
    } 

Теперь просто изменить жестко запрограммированные номера значение для ввода пользователя и его выполнение. Вы можете окружить его в try-catch, чтобы проверить исключения для формата, если вы боитесь, что пользователь вводит что-то другое, кроме цифр.

+0

sum + = splitNumbers [i]; это даст только конкатенированную строку. Вы должны разобрать свои цифры на int, а затем сделать сумму –

+0

Да, как-то удалил этот бит, когда я его отредактировал. Спасибо :) – FruitAddict

0

Лучшей реализацией метода add() будет разбиение длинной строки на массив строк. Вы можете вызвать метод String, split(" "), чтобы преобразовать строку в массив строк.

public static int adding(String input) { 
    int sum = 0; 
    String[] array = input.split(" "); 

    //starts from 1 because array[0] is the name of the series 
    for (int i = 1; i < array.length; i++) { 
     sum += Integer.parseInt(array[i]); 
    } 
    return sum; 
} 

Надеюсь, это поможет!

+0

sum + = array [i]; это даст только конкатенированную строку. Вы должны разобрать свои цифры до int, а затем сделать сумму –

+0

oops случайно оставил это хаха. Спасибо, btw! – jials

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