Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
增强了循环Java运行到特定索引的能力?_Java_Arrays_For Loop_Foreach - Fatal编程技术网

增强了循环Java运行到特定索引的能力?

增强了循环Java运行到特定索引的能力?,java,arrays,for-loop,foreach,Java,Arrays,For Loop,Foreach,我正在学习如何使用增强for循环。 想象一个大小为1000的数组,称为arr。 书写 for(tx:arr){/*blah blah*/} 将遍历整个阵列。我知道我可以使用break来打破循环在循环体内部 有没有办法在特定索引值处停止循环执行 可以写这个吗 for (T x: arr[500]) {/* blah blah */} 因此,我可以避免使用计数器?简言之:否。要做到这一点,您应该使用循环的“普通”: for (int i = 0; i < someCondition; i++

我正在学习如何使用增强for循环。 想象一个大小为1000的数组,称为arr。 书写

for(tx:arr){/*blah blah*/}

将遍历整个阵列。我知道我可以使用
break来打破循环在循环体内部

有没有办法在特定索引值处停止循环执行

可以写这个吗

for (T x: arr[500]) {/* blah blah */}

因此,我可以避免使用计数器?

简言之:否。要做到这一点,您应该使用
循环的“普通”

for (int i = 0; i < someCondition; i++) {
  if (i < someNumber) {
    break;
  }
}
for(int i=0;i
您可以执行以下操作,但在这种情况下最好使用条件循环

for(T x: Arrays.copyOfRange(arr, 0, 500)) {}

如果您使用的是Java8+,那么实际上可以通过使用原始源数组的子数组来执行相同的操作

int[] subarray = IntStream.range(0, 500)
                        .map(i -> src[i])
                        .toArray();
//then do 
for (T x: subarray) {/* blah blah */}

或者您可以使用lambda streams来实现相同的功能:

Arrays.stream(arr).limit(500).foreach(x -> {/* blah blah */});


如果希望增强循环在特定索引值处停止,则应该自己跟踪索引。您可以执行以下操作:

    int index = 0;
    for(T x: arr) {
        if(index==10) {
            break();   
        }

        //do whatever you want to do here before index value becomes 10.        
        index++;

    }

您可以采用其他方法,但这是最简单的方法。

您可以使用此方法而不是代码

for(var i=0;i<500;i++){
T x=arr[i];
 //your code

}

for(var i=0;i我认为,您正在寻找实现这一点的语法方法,而不是实现这一效果的变通方法。
如果我是正确的,那么-不,没有办法指出增强for循环中的中断索引,这就是增强for循环存在的原因之一-告诉编译器以连续的方式迭代所有对象蚂蚁在特定的索引上打破它


原因是,增强for循环在内部使用迭代器对象并在集合上迭代,直到迭代器有下一个元素。

是什么阻止您使用
子数组
?。您可以简单地将
子数组定义为
IntStream.range(0500).map(i->src[i]).toArray();
如果需要索引,则需要对循环
for(int i=0;…}
Arrays.stream(arr).limit(500).forEach(x->/*blah*/);
第一个代码段还需要Java 8。