Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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
不能写;i+;2“;作为my for each循环[Java]中的post条件_Java_Arrays_Foreach - Fatal编程技术网

不能写;i+;2“;作为my for each循环[Java]中的post条件

不能写;i+;2“;作为my for each循环[Java]中的post条件,java,arrays,foreach,Java,Arrays,Foreach,有人能给我解释一下为什么我可以在遍历for-each循环中的列表时写“i+2”作为post条件,但在遍历数组时必须写“i=i+2” for(int i = 0; i < numbers.length; i+2) { numbers[i] = 2; System.out.println(numbers[i]); } for(int i=0;i

有人能给我解释一下为什么我可以在遍历for-each循环中的列表时写“i+2”作为post条件,但在遍历数组时必须写“i=i+2”

    for(int i = 0; i < numbers.length; i+2)
    {
        numbers[i] = 2;
        System.out.println(numbers[i]);
    }
for(int i=0;i
必须是一个
语句表达式列表
,即s的列表

i+2
是一个表达式,但不是语句表达式

语句表达式可以非正式地(*)被认为是可能有副作用的表达式,因此它们单独出现在语句中是有意义的
i+2
没有副作用,因此评估它没有意义


(*)非正式地说,因为
method1()+method2()
可能有副作用,因为
methodN()
可能有副作用;然而,它不是一个语句表达式,因为这里的“主要”表达式-加法-本身没有副作用


您可以将其编写为(;;method1(),method2()){…}
(无需添加)的
,如果这是您在
for update
i+2中想要的,它是一个表达式,您必须将结果分配到某个位置,因此正确的语法是:

for(int i = 0; i < numbers.length; i=i+2)
{
    numbers[i] = 2;
    System.out.println(numbers[i]);
}
for(int i=0;i
因为
i+2
要实现什么?添加的结果不会保存在任何位置。如果需要结果,您需要将其分配给
i
i+2
只需计算表达式,但不处理此表达式的答案。您需要更新
i
的值,这是通过使用
=
符号重新分配
i
的值来完成的,而不是
i=i+2
,您可以编写
i+=2
顺便说一句。这既不是“for each”循环,也不是列表-只是一个简单的数组上的for循环请注意,您所迭代的内容是无关的。您使用的
语句的类型决定了语法。您可以使用和迭代
数组
s和
列表
s。