Java:在 for 循环 init 中初始化多个变量?

2022-08-31 10:15:51

我想要两个不同类型的循环变量。有没有办法做到这一点?

@Override
public T get(int index) throws IndexOutOfBoundsException {
    // syntax error on first 'int'
    for (Node<T> current = first, int currentIndex; current != null; 
            current = current.next, currentIndex++) {
        if (currentIndex == index) {
            return current.datum;
        }
    }
    throw new IndexOutOfBoundsException();
}

答案 1

for 语句的初始化遵循局部变量声明的规则

这将是合法的(如果愚蠢的话):

for (int a = 0, b[] = { 1 }, c[][] = { { 1 }, { 2 } }; a < 10; a++) {
  // something
}

但是,尝试根据需要声明非重复和类型对于局部变量声明是不合法的。Nodeint

您可以通过使用如下所示的块来限制方法中其他变量的范围:

{
  int n = 0;
  for (Object o = new Object();/* expr */;/* expr */) {
    // do something
  }
}

这可以确保您不会意外地在方法中的其他位置重用变量。


答案 2

你不能喜欢这个。要么使用相同类型的多个变量,要么提取另一个变量并在 for 循环之前声明它。for(Object var1 = null, var2 = null; ...)