Программа сложения, которая продолжает складывать введенные вами числа, пока вы не введете ноль. В Яве

В этой программе вы (пользователь) продолжаете вводить числа до тех пор, пока не введете ноль, когда список заканчивается, и вы получаете сумму положительных четных, нечетных и отрицательных чисел. Я очень старался завершить его, но проблема в том, что и http://ideone.com/, и DrJava зависают. когда я пытаюсь их запустить. Но компилируются нормально. Вот моя программа:

 /**
*@author DarkIceDragon
*/
 import java.util.*;
 class huge_addition
{
public static void main (String[] args)
{
    Scanner sc = new Scanner (System.in);
    System.out.println ("Enter numbers. List terminates when you enter a zero. Enter a zero when you want to begin the addition.");
    int a = sc.nextInt();
    int esum=0;
    int osum=0;
    int nsum=0;
    while (a !=0)
    {
        if (a>0)
        {
            if (a%2==0)
            {
                esum = esum+a;
            }// end of 3rd innermost if statement
            else
            {
            osum = osum+a;
            }// end of 3rd else statement
        }//end of 2nd middle if-else-loop
        else if (a<0)
        {
            nsum=nsum+a;
        }//end of 2nd middle else statement
    }//end of while loop
        System.out.println ("The sum of even positive numbers is "+esum);
        System.out.println ("The sum of odd positive numbers is "+osum);
        System.out.println ("The sum of negative numbers is "+nsum);
    }//end of main
        }//end of class

Я признаю, что это для школы, но я закончил все остальное сам (было около 16 или около того), сейчас 12:00 ночи, и я пытался заставить эту программу работать больше часа. . А я еще полный новичок (хотя нуб было бы уместнее) в Java, так что пока только основные команды и прочее. Черт возьми, до сегодняшнего дня я все еще использовал void main() вместо public static void main(String[] args) в своих программах и провел 2 часа, задаваясь вопросом, почему они не работают в NetBeans. Жаль, что BlueJ перестал работать для меня.

Любая помощь помощь будет оценена по достоинству. Спасибо за внимание и хорошего дня!


person DarkIceDragon    schedule 26.01.2013    source источник
comment
добавьте a = sc.nextInt(); в конце вашего while цикла. Похоже, вы пропустили чтение следующего числа в цикле.   -  person MrSmith42    schedule 26.01.2013
comment
Внутри цикла в последней строке цикла :) это сэкономит вам день! :)   -  person Reno Jones    schedule 26.01.2013
comment
Большое спасибо. Вы все! Радости программирования. Одна строчка может испортить работу на целый день. Мне это нравится! :D   -  person DarkIceDragon    schedule 26.01.2013


Ответы (2)


Вы должны принимать число каждый раз в цикле while с помощью sc.nextInt() , и то, что вы делали, просто входило в цикл while и ничего не делало. Принимайте число каждый раз и на основе этого числа проверяйте, является ли оно четным или нечетным. , а затем добавить.

Вот исправленный код:

import java.util.*;
class huge_addition
{
public static void main (String[] args)
{
Scanner sc = new Scanner (System.in);
System.out.println ("Enter numbers. List terminates when you enter a zero. Enter a zero when you want to begin the addition.");

// no need ->> int a = sc.nextInt();
int num=-1;
int esum=0;
int osum=0;
int nsum=0;
while (num !=0)
{

    System.out.println("enter the number");
       num= sc.nextInt();
        if (num%2==0)
        {
            esum = esum+num;
        }// end of 3rd innermost if statement
        else
        {
        osum = osum+num;
        }// end of 3rd else statement
    //end of 2nd middle if-else-loop
    if (num<0)
    {
        nsum=nsum+num;
    }//end of 2nd middle else statement
 }//end of while loop
    System.out.println ("The sum of even positive numbers is "+esum);
    System.out.println ("The sum of odd positive numbers is "+osum);
    System.out.println ("The sum of negative numbers is "+nsum);
 }//end of main
    }//end of class
person joey rohan    schedule 26.01.2013

Поскольку это ваша школьная домашняя работа, я отвечу только на подсказку: проверьте позицию sc.nextInt() в вашем коде. Второй совет: попробуйте ввести число ноль в качестве первого ввода при запуске кода.

person NoNamed    schedule 26.01.2013