当前位置:  开发笔记 > 编程语言 > 正文

Java,无限循环,增量

如何解决《Java,无限循环,增量》经验,为你挑选了3个好方法。

在Java的以下示例程序中,我得到无限循环,我无法理解为什么:

public class Time {

    public static int next(int v) {
        return v++;
    }

    public static void main(String[] args) {

        int[] z = {3, 2, 1, 0};

        int i = 1;

        while(i < 4) {
            System.out.println(z[i]/z[i]);
            i = next(i);
        }
    }
}

在while循环中,方法next()被调用,并且我应该每次递增1:next()应该返回i ++,而while循环中i的值应该递增1.

为什么可能是无限循环的原因?谢谢.



1> empi..:

您使用后增量.这应该工作:

public static int next(int v) {
        return v+1; //or ++v
    }

所以基本上,你的例子中的下一个函数返回相同的数字,而不是递增一个.



2> Adrian Pronk..:

v ++的定义是:

Return the current value of v then add one to v

在您的情况下,v是方法参数,它是main中变量i的副本,因此该方法只返回传递给它的相同值.从不使用v中的递增值.

你可以使用++ v.其定义是:

Add one to v, then return the new value



3> John T..:

这里的区别是后缀vs前缀运算符.

例如:

int a = 1;
int b = a++; // sets b to to 1 THEN increments a.

// a now equals 2.

int c = ++a; // increments a THEN stores the value in c, c = 3.

调用返回int ++的方法将不会达到预期效果.这与以下内容不同:

while (expression) {
// code...
intValue++;
}

因为在上面的代码块中,增量不会传递给单独的变量,并且在退出代码块,后缀或前缀形式之前将发生值的完全递增.

public static int someMethod(int n) {
return n++;  
}

而上面的代码块将返回n,然后再增加它.但是因为你的代码将继续给int n赋予相同的值,所以它将继续给出相同的值,因为它没有递增你的值,而是该方法的本地变量n.每次传递一个新值时,n都会被重置并返回相同的内容,从而产生无限循环.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有