我在这里有这个循环
for(int i =0; i < prices.length; i++)
{
if(prices[i]>largest)
{
largest = prices[i];
}
else if(prices[i]<smallest)
{
smallest= prices[i];
}
}
循环遍历整个数组并找到最小值和最大值。说我想只循环前20个元素我该怎么做?我已经尝试过在这个for循环下放置一个嵌套循环,看看我是否遇到过它,但我不能。
答案 0 :(得分:22)
您可以将需求添加到循环控制条件中:
for(int i =0; i < prices.length && i < 20; i++)
这将检查数组中20个元素的前20个元素,但是如果少于20个项目则检查整个数组。
答案 1 :(得分:6)
for(int i =0; i < 20 && i < prices.length; i++)
这将循环20次,即阵列的前20个元素。
答案 2 :(得分:6)
5个答案,他们都在循环中进行了双重比较?
难怪Java程序运行得这么慢......
执行此类循环的正确方法是:
for(int i = 0, len = Math.min(prices.length, 20); i < len; i++)
将长度和20之间的比较移出循环并评估循环条件因此快两倍。 (忽略JIT可能会或可能不会做什么)
此外,您必须使用第一个元素初始化最大/最小(或者如果由于else而在数组中只有一个元素,则获得无效值),然后您可以跳过循环中的第一个元素,使它“更快”:
largest = prices[0];
smallest = prices[0];
for(int i = 1, len = Math.min(prices.length, 20); i < len; i++)
答案 3 :(得分:5)
将prices.length
替换为Math.min(20, prices.length)
,这是数组的长度或20,以较小者为准:
for(int i =0; i < Math.min(20, prices.length); i++)
答案 4 :(得分:4)
将你的for循环更改为:
for(int i =0; i < (prices.length < 20 ? prices.length : 20); i++)
{
if(prices[i]>largest)
{
largest = prices[i];
}
else if(prices[i]<smallest)
{
smallest= prices[i];
}
}
答案 5 :(得分:3)
如果你只想循环前20个元素,那么在for循环的标题中这样说,就像这样。
for(int i =0; i < prices.length && i < 20; i++)
答案 6 :(得分:-1)
最大值是正确的,以获得最小值是简单的make max = min 然后工作就好 那么
if(min>x[i])
min=x[i];