【问题标题】:How to pass an Array and the current index to a method in Java如何将数组和当前索引传递给Java中的方法
【发布时间】:2016-12-02 00:59:32
【问题描述】:

我想使用 swap() 方法对数组进行排序,如代码所示。我想知道如何传递数组并对其进行排序。

    public class Test {
    public static void main(String[] args) {
        int [] ar = {9, 4, 5, 3, 1, 8, 4, 2, 0};
        System.out.println(Arrays.toString(ar));
        for (int i = 0; i<ar.length-1; i++){
            for (int j = i+1; j<ar.length; j++){
                swap(ar[i], ar[j]);
            }
        }
        System.out.println(Arrays.toString(ar));
    }
    private static void swap(int i, int j) {
        int temp;
        if(i>j){
            temp = j;
            j = i;
            i= temp;
        }       
    }
}

【问题讨论】:

  • 你声明了一个数组类型的方法参数:int[] ar.
  • 你的意思是我必须像这样声明它:private static void swap(int [], int []){...}
  • 不,你为数组添加一个第三个参数
  • 如果要通过引用传递变量,则不必对变量进行特殊处理。这与 C/C++ 不同,您只需按原样传递变量。阅读:Is java pass by value or by reference
  • 我不知道这是否是有意的,但我相信您的循环不会遍历整个数组。应该是i&lt;ar.length;,除非它是故意的。

标签: java arrays sorting parameter-passing


【解决方案1】:

数组就像任何其他类型一样。如果要将数组传递给方法,请声明该类型的参数,例如

private static void swap(int[] ar, int i, int j) { ... }
                         ^ This is a parameter of type int[].

请注意,您传递的 ij 应该是索引,而不是数组中的值:

swap(ar, i, j);

然后交换元素:

temp = ar[i];
ar[i] = ar[j];
ar[j] = temp;

【讨论】:

  • 谢谢。很有用。
  • @Eid 你也可以在没有临时变量的情况下交换这两个值:ar[i]^=ar[j]; ar[j]^=ar[i]; ar[i]^=ar[j];。当你和你的朋友在酒吧里时,这是一个很好的故事。但我不会推荐它。
【解决方案2】:

最简单的方法是:

private static void swap(int[] ar, int i, int j) {
    //Do work here
}

【讨论】:

  • 抱歉,暂时忘记了数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多