在Java中循环遍历数组的前20个元素

时间:2013-02-04 22:08:41

标签: java arrays loops

我在这里有这个循环

 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循环下放置一个嵌套循环,看看我是否遇到过它,但我不能。

7 个答案:

答案 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];