【问题标题】:How to reverse an array ? [duplicate]如何反转数组? [复制]
【发布时间】:2013-01-11 07:17:30
【问题描述】:

我需要反转一个数组,例如将点 5 中的内容移动到 0、4 到 1、3 到 2。

            int size, length;

    System.out.print("how big of a list do you have: ");
    size=reader.nextInt();

    length=size-1;

    int [] array = new int [size];

    for (int count=0; count < array.length; count ++){
        System.out.println("enter a number: ");
        array [count] = reader.nextInt();
    }
    for (int count=length; count > 0; count --)
    array [(length-count)];
}

}

我在 Eclipse 中执行此操作,并且在最后一行中不断收到错误消息,说我没有使用运算符/表达式:array [(length-count)]; 但我不知道为什么减号不起作用?或者如果我的程序可以正常运行,它并没有通过构建部分。

【问题讨论】:

    标签: java arrays reverse


    【解决方案1】:
    int temp = 0;
    for (int i = 0; i < array.length / 2; i++)
    {
        int temp = array[i];
        array[i] = array[array.length - i--];
        array[array.length - i--] = temp;
    }
    

    temp 用于避免数字相互覆盖。把它想象成从冰箱里取食物。牛奶在水后面,你想要一些牛奶。为了得到牛奶,你把水拿在手里(temp 就是手)。然后你把牛奶放在水所在的地方,水放在牛奶所在的地方。没有“手”,你就会失去水(掉在地板上,或者在 temp 的情况下,失去记忆),只剩下牛奶。

    【讨论】:

    • 感谢这行得通,但如果不是太多,请问有人可以解释这是如何工作的,以及 temp 的具体作用。
    【解决方案2】:

    Array[(length-count)] 不起作用,因为它是一个值,和写一样

        0;
    

    这不是对过程或操作的调用,因此是错误。

    试试这个:

        int temp = 0 ;
        for(int start=0, end = numbers.length -1 ; start < end; start++, end--){
            //swap numbers
            temp = array[start];
            array[start] = array[end];
            array[end] = temp;
        }
    

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多