返回调用函数中的更新值

时间:2014-11-11 04:41:37

标签: java function call

嗨=)我的编码中有一个问题我不知道,所以我在这里做了类似的编码,以寻求帮助。

这是我的编码:

package test;

public class Test {

public static void main(String[] args) {
    int i=0, j=5;
    while(i<10){
        skip(i,j);
        System.out.println(i);
        i++;
    }
}

public static void skip(int i, int j){
    if(i==j){
        i+=1;
    }
}
}

我的问题是如何跳过调用函数跳过整数5?

我的结果应该是这样的:(&#34; 5&#34;没打印出来)

0
1
2
3
4
6
7
8
9

5 个答案:

答案 0 :(得分:2)

您无法修改调用者对原始值的引用。它们没有引用,包装类型Integer是不可变的。我想你正在寻找像

这样的东西
public static void main(String[] args) {
    int i = 0;
    while (i < 10) {
        System.out.println(i);
        i = skip(i);
    }
}

public static int skip(int i) {
    return (i == 4) ? i + 2 : i + 1;
}

上述三元可以表示为

public static int skip(int i) {
    if (i == 4) return i + 2;
    return i + 1;
}

修改

或者,

public static int skip(int i) {
    if (i + 1 == 5) return i + 2;
    return i + 1;
}

答案 1 :(得分:1)

if (i == 5) {
    i++;
    continue;
}

你需要在继续之前将i递增1,否则它将以无限循环结束,因为我的值在5之后没有变化。

<强>更新 尝试运行此代码。 它不是打印abc,所以它是无限循环

public static void main(String[] args) {
    int i=0;
    while(i<10){
        if (i == 5) {
            System.out.println(i);
            //i++;
            continue;
        }
        System.out.println(i);
        i++;
    }
    System.out.println("abc");
}

答案 2 :(得分:0)

package test;

public class Test {

    public static void main(String[] args) {
        int i=0;
        while(i<10){
            i=skip(i);
         }
    }

    public static int skip(int i){
        if(i!=5){
            System.out.println(i);
        }
        return i+1;
    }
}

<强> 修改

package test;

public class Test {

    public static void main(String[] args) {
        int i=0;
        while(i<10){
            i=skip(i);
            System.out.println(i);
         }
    }

    public static int skip(int i){
        if(i==4){
           i +=1;
        }
        return i+1;
    }
}

答案 3 :(得分:0)

然后试试这个:)

if(i==5){
   i=skip(i);               
}

private static int skip(int i) {
    i+=1;
    return i;   
}

答案 4 :(得分:0)

请查看以下代码。

package test;

public class Test {
    int i=0;
    public void skip(int x)
    {
        if(x==i)
        {
            i++;
        }
    }
    public static void main(String args[])
    {
        int j=5;
        Test t=new Test();
        while(t.i<10)
        {
            t.skip(j);
            System.out.println(t.i);
            t.i++;
        }
    }
}