0

代入の手順は次のとおりです。ユーザーに多くの整数を入力するように求める evenSum という名前のメソッドを作成し、偶数の合計と偶数の最大値を出力します。ユーザーが少なくとも 1 つの負でない偶数の整数を入力すると想定できます。最後の部分を除いて、すべて正しく書かれています。

その部分は、偶数でもある最高値の数を決定しています。だから、私はそれをif文の本体に持っています(numbers % 2 == 0)。最大数はどうやって調べるのですか?ちなみに、私は配列を使用できず、Math.max を試しましたが、それを使用して最大値を決定する方法がわかりません。

public void evenSum()
{
int sumamount = 0;
int evenMax = 0;
int numberOfInputs = 0;
int numbers = 0;
Scanner in = new Scanner(System.in);


System.out.print("how many integers? ");
numberOfInputs = in.nextInt();


for(int i = 0; i < numberOfInputs; i++)
    {
        System.out.print("next integer? ");
        numbers = in.nextInt();

        if(numbers % 2 == 0)
            {
                sumamount += numbers;
                if(numbers > numbers)
                {
                    evenMax = numbers
                }
            }
            else
                numbers = 0;


    }


        System.out.print("even sum = ");
        System.out.println(sumamount);
        System.out.print("even max = ");
        System.out.println(evenMax);
    }
4

4 に答える 4

1
 if(numbers > numbers) 

する必要があります

if (numbers > evenMax)

また

-から始めると、入力されevenMax = 0たすべての偶数が負の場合はどうなりますか?おそらく、明示的な「未設定」フラグが必要です。

于 2012-10-12T03:00:41.043 に答える
1

ここに問題if(numbers > numbers)があるはずですif (numbers > evenMax)

于 2012-10-12T03:01:11.963 に答える
1

この行が犯人です:

if(numbers > numbers)
{
    evenMax = numbers
}

条件は

if (evenMax < numbers) {
    evenMax = numbers;
}

また、evenMax を-1(奇数) に-1初期化し、その場合を処理して、最初の入力 (つまり最初の偶数入力) で適切に初期化する方がよい場合があります。これは、すべての入力が負の偶数である場合を処理します。

于 2012-10-12T02:59:17.443 に答える
1

for ループ内で、次のように変更します。

if(numbers > numbers)

に:

if(numbers > evenMax)
于 2012-10-12T02:59:26.163 に答える