0

赋值指令是这样的:编写一个名为 evenSum 的方法,提示用户输入许多整数,并打印偶数的总和和偶数的最大值。您可以假设用户至少键入了一个非负偶数。除了最后一部分,我把所有的东西都写对了。

该部分正在确定具有最高值的数字,该数字也是偶数。因此,我将它放在 if 语句的主体中(数字 % 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)
{
    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 回答
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 回答