0

次のコードは、最初に実行したときに、合計、平均、正/負の数の数、すべての数の数を正しく出力します。ループするため、出力はコンソールに残り、ユーザーに再度数字を入力するように促します。このとき、合計のみが正しい出力を示し、他の値は 2 倍になります。ループを修正するのを手伝ってください。ありがとう!

public class Test {

    public static void main(String[] args) {
        long n; 
        int count=0;
        float average;
        int positive=0;
        int negative =0;


        Scanner in = new Scanner(System.in);

        do {

            System.out.print("Enter a positive or negative integers: ");
            n = in.nextLong();


            if (n == 0){
                System.out.println("Integers you've entered is invalid. Please re-launch the Program.");
            }
            else 
            {
                int sum=0;

                do
                {
                    //Find sum of the integers entered.
                    sum += n %10;
                    n /= 10;

                    //Count number of integers entered.
                    count++;

                    //Find average of the numbers
                    average = sum / count;

                    //Find a count of positive and negative numbers.
                    if(n < negative){
                        negative++;
                    }                                   
                    else{
                        positive++;
                    }

                } while (n != 0);

                n = sum;
                System.out.println("The Sum of the numbers: " + sum);
                System.out.println("The Average of the numbers: " + average);
                System.out.println("Positive numbers are: " + positive);
                System.out.println("Negative numbers are: " + negative);
                System.out.println("The count of all numbers: " +count);

            }

        } while(n != 0);

    }
}
4

2 に答える 2

3

それがsum正しく出力される唯一のものであることは理にかなっています。これは、外側のループの反復ごとに初期化する唯一の値です。


countpositive、およびnegativeは反復ごとに再初期化されないため、外側のループの次の反復を開始すると、出力された場所から開始されます。

ループを実行するたびに、それらを再度初期化したい場合があります。

于 2013-09-16T19:28:47.240 に答える
0

do while2 回目のループに入る前に、変数を再初期化することはありません。

そう

else 
{
   int sum=0;
   do
   {

する必要があります

else 
{
    int sum=0;
    count=0;
    average=0.0f;
    positive=0;
    negative =0;
    do
    {
于 2013-09-16T19:31:18.593 に答える