有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java返回调用函数中的更新值

嗨=)我在我的编码中有一个问题,我对此一无所知,所以我在这里发了一篇类似的编码文章来寻求帮助

这是我的代码:

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;
    }
}
}

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

我的结果应该是这样的:(“5”没有打印出来)

0
1
2
3
4
6
7
8
9

共 (5) 个答案

  1. # 1 楼答案

    试试这个:)

    if(i==5){
       i=skip(i);               
    }
    
    private static int skip(int i) {
        i+=1;
        return i;   
    }
    
  2. # 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;
    }
    
  3. # 3 楼答案

    试试看

    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;
        }
    }
    
  4. # 4 楼答案

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

    在继续之前,您需要将i增加1,否则它将以无限循环结束,因为i值在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");
    }
    
  5. # 5 楼答案

    请看下面的代码

    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++;
            }
        }
    }