我能为两个大小相同的数组使用for each吗?

5

我有两个数组:

name[] and roll[]

有没有一种方法可以在一个for each循环中遍历两个数组。两个数组的大小保持不变。
我知道我们可以使用两个单独的循环来遍历,实际上在一个循环中也不是什么大问题,但我想要像这样的东西:
for(String n:name,int r:roll){
  //blah blah
}

请给予一些指导,谢谢...... 安库尔

2
值得一读:增强型for循环的规范。这是一个需要使用老式的基于索引的for循环的情况。 - T.J. Crowder
4个回答

7
不,您需要使用老式的方法。
for(int index = 0; index < name.length; index++) {
  //blah blah with name[index] and roll[index]
}

问题是针对for-each循环而不是普通for循环的。 - Pramod Kumar
1
我知道,我只是指出了(相当明显的)唯一选择。编辑后更清晰明了。 - Keppil

4

不行。你不能使用单个for-each循环遍历两个大小相同的数组。

如果你想要在一个循环中迭代这两个数组,那么你必须使用传统的java for循环。


Java中没有数字索引数组吗? - PeeHaa
@PeeHaa:当然,Java有对数组的索引访问,但是提问者特别询问了增强型for循环(“for each”)。 - T.J. Crowder
K tnx(我是PHP程序员)。当两个数组都是从零开始索引时,仍然有可能吗? - PeeHaa

2
for(int i=0,len=name.length; i<len; i++) {
     String n = name[i];
     int r = roll[i];
}

2
for...each循环没有暴露索引(实际上甚至没有索引)。如果您真的想要使用自己的索引,可以使用它,但最好还是使用带有索引的传统for循环。

这是如何使用自己的索引:

{
    int index = 0;
    for(String name : names) {
        // roll[index];
        ++index
    }
}

另请查看此回答


1
为什么这容易出错,我们需要增强的foreach的例子!您使用了索引和i - 这是我犯的错误类型。 - peter.murray.rust
好的发现!至少编译器会在这里帮助我们(我用手机打的答案)。 - Jeshurun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接