我一直在想,为什么不编译?
for(int i=0, int q=0; i<a.length; i++){
...
}
为什么Java不允许我在for循环'header'中声明多个变量?这背后有合理的原因吗?
答案 0 :(得分:6)
for
中的分号分隔三个不同的部分,每个部分具有完全不同的目的(初始化,条件和操作)。添加更多分号只会使解析器混淆,因为解析器无法确定哪一个意味着什么。你试过吗
for (int i = 0, q = 0; i < a.length; i++)
代替?您可以根据需要添加任意数量的变量,但只能添加一种类型:
for (int i = 0, q = 0, r = 0, ...; i < a.length; i++)
这种限制很可能是从C继承的,它具有相同的行为。
答案 1 :(得分:2)
因为您已初始化int
。
正确的语法是:
for (int i = 0, b = 0; i < 5; i++) {
//....
}
就像你做的那样
private int a,b;
或private int a = 55, b = 52;
在Java中,您可以(并且必须)使用逗号设置值,仅声明类型一次。
Object a, b, c, d;
等等。
同样适用于添加多个条件&amp;动作:
for (int i = 0, b = 0; i < 5 && b > 7; i++, b++) {
// Yay
}