我花了最后一小时对这个问题进行反复试验而无济于事。我们必须使用通用编码指南(如scan.nextDouble)而不是实际数字,找到一定数量的double值的最大值。唯一的问题是我们只能在某一点添加代码。 (......的地方)
double value, valMax;
int n;
n = scan.nextInt();
for(int j = 0; j < n; j++)
{
value = scan.nextDouble();
...
}
读入的第一个值是int,它是要输入的双精度数。
这很困难,因为我必须找到一种方法来在循环中初始化valMax而不会弄乱其他任何东西。
这是我一直在使用的,但没有任何工作对我来说。
for(int j = 0; j < n; j++)
{
value = scan.nextDouble();
if(j == 0)
{
valMax = scan.nextDouble();
j++;
}
else
{
continue;
}
if(value >= valMax)
{
valMax = value;
}
}
示例输入:
5 -4.7 -9.2 -3.1 -8.6 -5.0
其中-3.1是最大值,5是以下数字的计数。
答案 0 :(得分:1)
您的代码似乎是一个良好的开端。
要帮助解决您的问题,请考虑:
j++
?你真的需要它吗? (提示:否;-))j>0
做什么(即在第一次迭代之后)?那应该很快给你一个有效的解决方案。
答案 1 :(得分:0)
您是否可以在循环前设置valMax
?因为在这种情况下你可以做到
valMax = Double.MIN_VALUE
通过正常比较value > valMax
来忘记奇怪的事情。
如果你不是你的方法,那你应该做两件事:
j++
进行递增,因为for
循环本身会关心它。else { continue; }
会使for
的主体跳转到下一次迭代而不关心继续之后的代码。你确定那是你想做的吗?我认为您可以在第一次迭代(Double.MIN_VALUE
)初始化为j == 0
并且之后只是正常行为:您唯一需要的是在第一次比较之前初始化valMax
值,而不是从stdin扫描之前..