如果我写这个:
int array[] = {2, 2, 4, 6, 8, 5};
for (int i : array) {
}
..没关系,但如果我这样写:
int array[] = {2, 2, 4, 6, 8, 5};
int i = 0;
for (i : array) {
}
它给了我一些问题。我的老师说他希望我们总是在顶部进行初始化,我们如何将int
放在for
内...
还有其他方法可以写吗?
答案 0 :(得分:1)
您使用的语法是for循环的特殊情况,有时称为" for-in"环。你的老师可能想要一个更传统的C风格循环:
for (int i = 0; i < array.length; i++) {
// you need to say array[i] to access elements here
}
不同之处在于for-in循环不使用计数器(循环归纳变量),它使用未初始化的值i
并在迭代时将该名称绑定到数组的每个元素。
答案 1 :(得分:1)
Java中的for each loop需要类型,但您还没有提供。您只提供了变量i
。
for (type var : arr) {
// body-of-loop
}
退出该类型是语法错误。如果您的讲师坚持要求您在循环之前声明i
,那么您将不得不使用常规for loop
int i = 0;
for (i = 0; i < array.length; i++) {
// body-of-loop
}
(虽然我不同意这是好风格。)
答案 2 :(得分:1)
如果要遍历数组的所有元素,可以采用以下两种方式:
当你只需要元素时:
for (int element : array) {
...
}
当您还需要索引(i
)时:
for (int i = 0; i < array.length; i++) {
int element = array[i];
...
}
对于第二个循环,如果您的老师希望您在顶部声明所有内容,则可以执行以下操作:
int element;
for (int i = 0; i < array.length; i++) {
element = array[i];
...
}
答案 3 :(得分:0)
你有效地改变它:
int array[] = {2, 2, 4, 6, 8, 5};
for (int i : array) {
}
到
int array[] = {2, 2, 4, 6, 8, 5};
for (int i = 0: array) {
}
如果你试着读它,它真的没有意义。问,&#34;它想做什么?&#34; - 在第一种情况下,你告诉它采取数组中的所有整数。然而在第二种情况下,你试图以某种方式指定从哪里开始,但对于代码它没有意义:你怎么能从0到数组?
另一种写作方式是:
int array[] = {2, 2, 4, 6, 8, 5};
for (int i = 0; i < array.length; i++) {
int j = array[i]; // takes the value of the array at index i
}
这从索引0开始,并遍历索引#5,每次将索引增加1。 java中的数组索引从0开始,以小于1的长度结束,因此i
将从0到5。
答案 4 :(得分:0)
当你使用每个java构造时,将int
声明为for循环的一部分被认为是完全可以接受的(也是必要的),就像你的第一个代码块一样。
您的老师可能会担心您的变量没有定义的值,但在这种情况下它是可以接受的,因为整数i
将始终绑定到给定的数组或集合的值之后结肠。
答案 5 :(得分:0)
如果使用foreach语句(在Java中称为&#34; enhanced for loop&#34;),则必须在语句中声明变量的类型,否则它将无法编译。如果你想在顶部初始化,你不能使用foreach,但这是一个简单的for循环:
int i = 0;
for (; i < array.length; i++) {
}
或
int i;
for (i = 0; i < array.length; i++) {
}