Как найти сумму введенных чисел java

public class Solution {
public static void main(String[] args) throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    int sum = 0;
    while (true){
        String x = reader.readLine();
        sum = sum + Integer.parseInt(x);
        if (x.equals("сумма")) {
            System.out.println(sum);
            break;
        }
    }
}}

Задача такова: вводи числа с клавиатуры, плюсуй их, при написании слова “сумма” выводить сумму. Компилится, запускается, но после ввода слова, начинает ругаться. Какие-то непонятки с типом переменной как я понимаю. Подскажите как исправлять сеё безобразие.

PS
ругательства:

Exception in thread "main" java.lang.NumberFormatException: For input string: "сумма"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)

Суммирование вводимых чисел. The summing junction of entered digits [Java]


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

package com.javarush.task.task04.task0442;
/*
Суммирование. Summing junction.
*/
import java.io.*;
public class SummingJunction {
public static void main(String[] args) throws Exception {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(r.readLine()), k = 0;
while(a != –1) {
k += a;//the calculation of every cycle
a = Integer.parseInt(r.readLine());
}
System.out.println(k1);//printing the sum all digits – 1
}
}
/*Суммирование
Вводить с клавиатуры числа и считать их сумму.
Если пользователь ввел -1, вывести на экран сумму и завершить программу.
-1 должно учитываться в сумме.
Требования:
1. Программа должна считывать числа c клавиатуры.
2. Программа должна выводить число на экран.
3. Программа должна посчитать сумму введенных чисел. Если пользователь ввел -1,
вывести на экран сумму и завершить программу.
4. В программе должен использоваться цикл for или цикл while.*/

This code is part of a receipt-program. I looped it so that users can input item prices (20 item maximum). I need to print the sum of all item-prices. Note that all item-prices are stored into the same double variable newItemPrice. Is this even possible? If not, please give me an idea on another way to do this.

while(x < 20){//maximum of 20 items

    x++;//item # (x was decalred as an integer of 1)

    System.out.println("nEnter new item's price");
    Scanner newItemPriceSC = new Scanner(System.in);
    Double newItemPrice = newItemPriceSC.nextDouble();//scans next double (new item's price)

    System.out.println("ITEM # " + x + "t" + "$" + newItemPrice);//item prices
    System.out.println("n");

    System.out.println("type "no more!" if there are no more itemsntype any other word to continue");
    Scanner continueEnd = new Scanner(System.in);
    String answ = continueEnd.nextLine();       

    if(!(answ.equals("no more!"))){
        continue;
    }


    if(answ.equals("no more!")){
        break;//ends loop
    }

    break;//ends loop (first break; was for a loop inside of this loop)

alecxe's user avatar

alecxe

460k120 gold badges1074 silver badges1184 bronze badges

asked Mar 8, 2015 at 3:07

Ben's user avatar

Declare a new variable before your while starts:

double total = 0;

Then add one line of a code in your cycle:

Scanner newItemPriceSC = new Scanner(System.in);//your code
Double newItemPrice = newItemPriceSC.nextDouble();//your code
total +=newItemPrice; //this is the new line

When the cycle will be ended, the “total” variable will contain the sum of all the prices entered.

answered Mar 8, 2015 at 3:40

Artyom's user avatar

4

You can use newItemPrice to accumulate all the prices by just incrementing it with the currently scanned price.

Double newItemPrice += newItemPriceSC.nextDouble();

However, then you lose the ability to print out the price in the next line.

You’ll need to introduce a temporary variable with the results of newItemPriceSC.nextDouble() so you can print it out. If you lose the requirement of printing out the item price, then you don’t need the temporary value.

answered Mar 8, 2015 at 3:15

Robert Moskal's user avatar

Robert MoskalRobert Moskal

21.5k8 gold badges61 silver badges85 bronze badges

Задача с Javarush: Напишем программу, в которой нужно вводить с клавиатуры числа и считать их сумму, пока пользователь не введет слово “ENTER”.
Вывести на экран полученную сумму и завершить программу.
Методами я пока никакими не пользуюсь и для меня решение вполне логично:

Scanner numbers = new Scanner(System.in);
        int sum = 0;
        int a = numbers.nextInt();
        
        boolean b = false;
        while(!b) {
            String c = numbers.nextLine();
            b = c.equals("ENTER");
            System.out.println(sum += a);
        }

но оно не проходит проверку, не выводит сумму чисел, не могу понять почему, открыл решение автора:

Scanner scanner = new Scanner(System.in);

        int sum = 0;
        boolean isExit = false;
        while (!isExit) {
            String line = scanner.nextLine();

            if (line.equals("ENTER")) {
                isExit = true;
            } else {
                int number = Integer.parseInt(line);
                sum += number;
            }
        }
        System.out.println(sum);

в принципе все понятно, но оно более сложное, цикл в цикле, не вижу в этом смысла; int number = Integer.parseInt(line) – и не до конца понимаю эту строчку, из объекта сканнер программа будет преобразовывать все в int, я просто создал новый int, т.е. по сути одно и тоже, только разными способами, но главный вопрос, sum += a – схема подсчета одна и та же, но у меня она не работает, что не так?

Чтобы реализовать ввод чисел с клавиаутуры нужно воспользоваться классом Scanner из библиотеки пакетов Java. Данный класс нужно импортировать до создания основного класса Main.

Далее в методе мей мы создаем
объект scn класса Scanner. Стандартный поток ввода т.е клавиатура в Java представлен объектом — System.in.

Метод .nextInt() считывает целые числа типа int и присваиеват их в переменную a.

import java.util.Scanner; // импорт класса Scanner

public class Main {

   public static void main(String[] args) {

       Scanner scn = new Scanner(System.in); // объект класса Scanner

       System.out.println(“Введите число А = “);

       int a = scn.nextInt(); // считываем первое введенное число

       System.out.println(“Введите число В = “);

       int b = scn.nextInt();

       System.out.println(“Сумма = ” + (a+b));

   }

}

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

import java.util.Scanner;

public class Main1{

   public static void main(String[] args) {

       System.out.println(“Введите сторону А = “);

       Scanner scn = new Scanner(System.in);

       int a = scn.nextInt();

       System.out.println(“Введите сторону B = “);

       int b = scn.nextInt();

       System.out.println(“Введите сторону C = “);

       int c = scn.nextInt();

       System.out.println(“Периметр треугольника равен = ” + (a+b+c));

   }

Добавить комментарий