java中带有方法的For循环迭代器
我正在尝试执行一个简单的for循环,通过方法完成迭代。未指定其返回值java中带有方法的For循环迭代器,java,Java,我正在尝试执行一个简单的for循环,通过方法完成迭代。未指定其返回值 public class DefaultC { public static void main(String[] args) { int i = 1; for(i= 10;i<=50; i=method(i)){ System.out.println(i); } } static int method(int i)
public class DefaultC {
public static void main(String[] args) {
int i = 1;
for(i= 10;i<=50; i=method(i)){
System.out.println(i);
}
}
static int method(int i){
return i++;
}
}
公共类DefaultC{
公共静态void main(字符串[]args){
int i=1;
对于(i=10;i++i
递增,然后返回i
)
i++
返回i
,然后递增它++i
递增,然后返回i
static int method(int i){
return i++;
}
i++
返回i
,然后递增它
static int method(int i){
return i++;
}
此方法正在执行后增量,这意味着它将返回作为方法参数传递的i
的值,之后它会增加i
的值,这现在根本没有用,因为变量i的范围仅取决于此方法
尝试执行预增量
return ++i;
编辑:根据OP的评论
@Prashant by i++它是有效的,但为什么i=method(i)不能呢
for(i=10;i
此方法正在执行后增量,这意味着它将返回作为方法参数传递的i
的值,之后它会增加i
的值,这现在根本没有用,因为变量i的范围仅取决于此方法
尝试执行预增量
return ++i;
编辑:根据OP的评论
@Prashant by i++它是有效的,但为什么i=method(i)不能呢
for(i=10;i原因是i++
有效,但increment(i)
无效,这是因为要增加的变量不同
i++
正在递增局部变量,因此可以看到其值的变化
increment(i)
是将i
复制到一个新变量,该变量恰好也被命名为i
,并在为return语句获取其值后,将其递增
循环的局部变量由++
保持不变,正如int j=i;j++;
不会更改i
的值一样
在Java中,方法参数 是的
但同样重要的是要注意,即使Java确实通过引用传递方法参数,在i++
和i=i++
之间仍然存在语义差异(这类似于i=increment(i)
情况)。另一个答案已经涵盖了为什么i=i++
不起作用。原因是i++
起作用,但increment(i)
不起作用,这是因为您增加的变量不同
i++
正在递增局部变量,因此可以看到其值的变化
increment(i)
是将i
复制到一个新变量,该变量恰好也被命名为i
,并在为return语句获取其值后,将其递增
循环的局部变量由++
保持不变,正如int j=i;j++;
不会更改i
的值一样
在Java中,方法参数 是的
但同样重要的是要注意,即使Java确实通过引用传递方法参数,在i++
和i=i++
之间仍然存在语义差异(这类似于i=increment(i)
情况)。另一个答案已经说明了为什么i=i++
不起作用。i++返回i的值,然后它会递增。
你需要做的是,使用++i
举个例子说明
public class DefaultC {
public static void main(String[] args) {
int i = 1;
for(i= 10;i<=50; i=method(i)){
System.out.println(i);
}
}
static int method(int i){
return ++i;
}
}
公共类DefaultC{
公共静态void main(字符串[]args){
int i=1;
for(i=10;ii++返回i的值,之后它会增加。
你需要做的是,使用++i
举个例子说明
public class DefaultC {
public static void main(String[] args) {
int i = 1;
for(i= 10;i<=50; i=method(i)){
System.out.println(i);
}
}
static int method(int i){
return ++i;
}
}
公共类DefaultC{
公共静态void main(字符串[]args){
int i=1;
对于(i=10;i阅读了关于后增量运算符的内容。它不会返回您认为它会返回的内容。执行一个返回i+1
i=method(i),它会返回每增加一次的值。但它没有赋值。为什么?@Prashant by i++它会工作,但为什么i=method(i)cant?@karthick请阅读更多关于变量范围的信息,然后是关于增量后运算符和增量前运算符的信息。阅读关于增量后运算符的信息。它不会返回您认为它会返回的内容。执行返回i+1
i=method(i),它返回每增加一次的值。但它没有赋值。为什么?@Prashant by i++它可以工作,但为什么i=method(i)cant?@karchigh请阅读更多关于变量范围的信息,然后是关于增量后和增量前运算符的信息。