将数字存储为最高值,而不是用Java输入的其他数字

时间:2012-10-12 02:55:53

标签: java if-statement for-loop max

赋值指令是这样的:编写一个名为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 个答案:

答案 0 :(得分:1)

这条线是罪魁祸首:

if(numbers > numbers)
{
    evenMax = numbers
}

条件应为

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

此外,将evenMax初始化为-1(奇数)可能会更好,并处理-1的情况并适当地初始化第一个输入(即首先输入)。这将处理所有输入均为负偶数的情况。

答案 1 :(得分:1)

在for循环中,更改:

if(numbers > numbers)

为:

if(numbers > evenMax)

答案 2 :(得分:1)

 if(numbers > numbers) 

应该是

if (numbers > evenMax)

同时

evenMax = 0开始 - 如果输入的所有偶数都是负数,会发生什么? 您可能需要一个明确的“未设置”标志。

答案 3 :(得分:1)

此问题if(numbers > numbers)应为if (numbers > evenMax)