Посчитать сумму чисел

 
 
 
Сообщения:6
Всем привет!
Совсем недавно начал изучать джаву.
Имеется задачка, которую я решил и код отрабатывает все указанные условия задачи, но тест в javarush она не проходит.
Задачка на использование циклов и операторов.
Условие задачи: Вводить с клавиатуры числа и считать их сумму. Если пользователь ввел -1,
вывести на экран сумму и завершить программу. -1 должно учитываться в сумме.
В чем может быть проблема?

public class Solution
{
    public static void main(String[] args) throws Exception
    {

        for (int t = 1; t > 0; t++)
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String sNum1 = reader.readLine();
            String sNum2 = reader.readLine();
            int nNum1 = Integer.parseInt(sNum1);
            int nNum2 = Integer.parseInt(sNum2);
            int a = nNum1;
            int b = nNum2;


            if ((a == -1) & (b != -1))
            {
                System.out.println ( a + b);
                break;
            }
            if ((a != -1) & (b == -1))
            {
                System.out.println ( a + b);
                break;
            }
            if ((a == -1) & (b == -1))
            {
                System.out.println ( a + b);
                break;
            }


            if ((a != -1) && (b != -1))
            {
                System.out.println ( a + b);
                continue;
            }

        }
    }


}
Изменен:30 дек 2016 22:32
 
 
Сообщения:456
SergioBerluskony:
код отрабатывает все указанные условия задачи

Вы в этом уверены? Например мне надо подсчитать сумму чисел 1 2 3 4, как мне это сделать?
С чего Вы решили что суммировать надо только два числа?
 
 
Сообщения:44
1. Цикл должен быть бесконечным, или while (true). У тебя он не бесконечный, через 2 в 31й он прекратится, даже если пользователь не введет -1.
2. Сумма должна накапливаться с каждым числом. Это значит, что твой аккумулятор должен создаваться ДО входа в цикл. А результат печататься после выхода из цикла по break'у.
 
 
Сообщения:6
izon:
SergioBerluskony:
код отрабатывает все указанные условия задачи

Вы в этом уверены? Например мне надо подсчитать сумму чисел 1 2 3 4, как мне это сделать?
С чего Вы решили что суммировать надо только два числа?

То есть юзер вводит числа сколько хочет и после ввод числа "-1" ( это как бы команда для прекращения сложения) выводить сумму всех введенных чисел с учетом уже введенного -1
Спасибо)
Изменен:01 янв 2017 16:46
 
 
Сообщения:6
Scimitar:
1. Цикл должен быть бесконечным,
разве у меня он не бесконечный? for (int t = 1; t > 0; t++)
Scimitar:
или while (true)
так будет нагляднее и проще, согласен
Scimitar:
Сумма должна накапливаться с каждым числом.
это до меня дошло. Спасибо!
Scimitar:
Это значит, что твой аккумулятор должен создаваться ДО входа в цикл.
аккумулятор - это то что будет складывать вводимые числа и выдавать их результат.
в бесконечном цикле будет помещен BufferedReader для возможности вводить "сколько влезет" и там же оператор if c break который будет вылавливать -1?
Спасибо за подсказки ) бум пробовать
Изменен:01 янв 2017 17:23
 
 
Сообщения:6
Задачку решил.
public class Solution
{
    public static void main(String[] args)   throws Exception {
        int sum = 0;
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        while (true){

            int s = Integer.parseInt(r.readLine());
            if (s != -1) {
                sum = s + sum;
            }
            else {

                System.out.println(sum + s);
                break;
            }

        }


    }
}
Изменен:03 янв 2017 00:34
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет