2014-12-04 1 views
0

У меня есть программа, но я не знаю конкретно, что моя ошибка или как ее исправить: Вопрос: Напишите программу, которая просит пользователя ввести серию чисел, разделенных запятыми. Программа должна рассчитывать и отображать сумму всех чисел. Например, если я ввожу 4,5,6,7, сумма отображается должна быть 22.Невозможно сделать сумму чисел, используя запятую и токенизатор строк

Это то, что я до сих пор:

import java.util.Scanner; 

public class SumAll { 

    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 

     String userNumber; 
     String sum = null; 

     //get numbers from user and store 
     System.out.println("Enter numbers seperated by coma's: "); 

     userNumber = keyboard.nextLine(); 
     String[] tokens = userNumber.split("[, ]"); 

     for (int i = 0; i < tokens.length; i++) { 
      sum = tokens.length[i++]; //showing me error here. Its written array required but int //found. 
     } 

     System.out.println("Sum is: " + sum); 
    } 
} 

Большое спасибо за помощь.

+1

Вы не можете выполнять арифметические действия со строками, вы должны преобразовать их в числа первых. Кроме того, как компилятор вам сообщает, чтобы получить доступ к * i * -тому элементу 'tokens', используйте' tokens [i] '. Наконец, вы повторно назначаете 'sum' на каждой итерации, а не добавляете к ней. – 5gon12eder

ответ

3

Сумма должна быть ИНТ

int sum = 0; 

Ваш цикл должен быть

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

Вы уже увеличиваете 'i' в декларации' for' для каждой итерации. Нет необходимости в дополнительном приращении в 'sum = tokens [i ++];'. Кроме того, вы переопределяете значение 'sum' на каждой итерации. Это должно быть 'sum + = tokens [i];' –

+1

Молодцы. Я возвращаю свой нижний план. –

+0

Да, это была моя ошибка.Я полностью забыл о разборе. Думаю, я должен использовать String вместо int. Большое спасибо за Вашу помощь. Действительно ценю это. – Sevs24

2

Потому что он должен быть:

sum += Integer.parseInt(tokens[i]); 
+0

BTW: в моем примере нет обработки ошибок –

2

Есть несколько вещей неправильно с этим одной линии код.

sum = tokens.length[i++]; 
  1. Вы не можете индексировать length массива, как это. Просто проиндексируйте массив (см. Ниже).
  2. Цикл for уже увеличивается i. Вам не нужно делать это снова.
  3. Вам необходимо преобразовать токен в целое число, прежде чем вы сможете добавить его в сумму.
  4. Вам нужно добавить новое значение в сумму, а не заменить старую сумму.

Попробуйте вместо этого:

sum += Integer.parseInt(tokens[i]); 

Вам также необходимо сделать sum целое число. Вместо

String sum = null; 

вам нужно

int sum = 0; 
1

Я знаю, что более 2-х лет поздно, но я начал изучать Java не так давно, и хотел бы поделиться своим решением. :) Я использовал класс StringTokenizer. Надеюсь, это поможет кому-то в 2017 году и далее.

import java.util.Scanner; 
import java.util.StringTokenizer; 

public class SumOfNumbersInString { 

    public static void main(String[] args) { 

     // Create a Scanner object 
     Scanner keyboard = new Scanner(System.in); 

     // Get user input 
     System.out.print("Enter a series of numbers seperated by commas\n> "); 
     String input = keyboard.nextLine(); 

     // Display sum by calling the getSum method 
     System.out.println("SUM: " + getSum(input)); 
    } 

    /** 
    * 
    * @param input with the format --> (#,#,#,#) 
    * @return sum of numbers in the input 
    */ 

    public static int getSum(String input) { 

     // Declare and initialize the sum accumulator variable 
     int sum = 0; 

     // Create a StringTokenizer object 
     // The string to be tokenized is passed as 1st parameter 
     // The "," that separates tokens/numbers is the 2nd parameter 
     StringTokenizer stringTokenizer = new StringTokenizer(input, ","); 

     // The hasMoreTokens method of the StringTokenizer class returns true if there are more tokens left in the string 
     // Otherwise, it returns false 
     while (stringTokenizer.hasMoreTokens()) { 
      // While the string has another token (number), parse the number to an integer and add its value to sum 
      sum += Integer.parseInt(stringTokenizer.nextToken()); 
     } 

     // Return sum's value to the method call 
     return sum; 
    } 

} 

ВЫВОД

Enter a series of numbers seperated by commas 
> 4,5,6,7 
SUM: 22 

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

  • Нет связанных вопросов^_^