我在这里有这个循环
for(int i =0; i < prices.length; i++)
{
if(prices[i]>largest)
{
largest = prices[i];
}
else if(prices[i]<smallest)
{
smallest= prices[i];
}
}
Run Code Online (Sandbox Code Playgroud)
它遍历整个数组并找到最小值和最大值.说我想只循环前20个元素我该怎么做?我试着在这个for循环下放置一个嵌套循环,看看我是否遇到过它,但我不能.
And*_*per 22
您可以将需求添加到循环控制条件:
for(int i =0; i < prices.length && i < 20; i++)
Run Code Online (Sandbox Code Playgroud)
这将检查数组中20个元素的前20个元素,但是如果少于20个项目则检查整个数组.
小智 6
for(int i =0; i < 20 && i < prices.length; i++)
Run Code Online (Sandbox Code Playgroud)
这将循环20次,即阵列的前20个元素.
5个答案,他们都在循环中进行了双重比较?
难怪,Java程序运行得如此之慢......
执行此类循环的正确方法是:
for(int i = 0, len = Math.min(prices.length, 20); i < len; i++)
Run Code Online (Sandbox Code Playgroud)
将长度和20之间的比较移出循环并评估循环条件因此快两倍.(忽略JIT可能会或可能不会做什么)
此外,您必须使用第一个元素初始化最大/最小(或者如果由于else而在数组中只有一个元素,则获得无效值),然后您可以跳过循环中的第一个元素,使其均匀"快点":
largest = prices[0];
smallest = prices[0];
for(int i = 1, len = Math.min(prices.length, 20); i < len; i++)
Run Code Online (Sandbox Code Playgroud)
替换prices.length为Math.min(20, prices.length),即数组的长度或20,取较小者:
for(int i =0; i < Math.min(20, prices.length); i++)