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