不能写;i+;2“;作为my for each循环[Java]中的post条件
有人能给我解释一下为什么我可以在遍历for-each循环中的列表时写“i+2”作为post条件,但在遍历数组时必须写“i=i+2”不能写;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(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。