代码之家  ›  专栏  ›  技术社区  ›  user6248190

在数组的闭合范围之间添加奇数

  •  4
  • user6248190  · 技术社区  · 7 年前

    我正在做代码挑战,其中给定两个整数 l r ,我必须打印所有介于 i R ( R 包括在内)。函数必须返回一个整数数组,表示介于 R .

    这就是我到目前为止所拥有的

    static int[] oddNumbers(int l, int r) {
        int[] theArray = new int[r];
        for (int i = l; i < theArray.length; i++) {
            if (i % 2 != 0) {
                for (int n = 0; n < theArray.length; n++) {
                    theArray[n] = i;
                }
            }
        }
        return theArray;
    
    }
    

    所以现在,如果你给它2和5的值,这个代码应该返回3,5。但是,这只返回33333。我做错什么了?如何改进此代码?

    4 回复  |  直到 7 年前
        1
  •  3
  •   Tim Biegeleisen    7 年前

    static int[] oddNumbers(int l, int r) {
        if (r <= l) return null;
    
        l = (l % 2) == 0 ? l + 1 : l;
        int size = ((r - l) / 2) + 1;
    
        int[] theArray = new int[size];
    
        for (int i=0; i < size; ++i) {
            theArray[i] = l + (i*2);
        }
    
        return theArray;
    }
    

        2
  •  4
  •   roxch    7 年前

    Streams

    static int[] oddNumbers(int i, int j){
            return IntStream.rangeClosed(i, j).filter(num -> num % 2 == 1).toArray();
        }
    

        3
  •  1
  •   Andrew    7 年前

    static int[] oddNumbers(int l, int r) {
        return IntStream.iterate(l, i -> i <= r, i -> ++i)  
                        .filter(i -> i % 2 != 0)
                        .toArray();
    }
    
        4
  •  0
  •   Oleg Cherednik    7 年前
    static int[] oddNumbers(int l, int r) {
        int[] theArray = new int[((r - l) / 2) + 1];
        for (int i = l % 2 == 0 ? l : l + 1, j = 0; i <= r; i += 2, j++)
            theArray[j] = i;
    
    
        return theArray;
    
    }