繁体   English   中英

反转数组中的元素

[英]Reversing elements in Arrays

public static void main(String[] args) {

    int[] HwArray = new int[10];
    for (int i = 0; i < HwArray.length; i++) {
        HwArray[i] = i;
        }

    int count = 0;
    for (int i = 0; i < HwArray.length; i++){
    HwArray[i] = (int) (100 + Math.random() * 100);         

    System.out.print("HwArray[i]=" + HwArray[i]);
            }

        }

    {
        int[] reverse(int[] HwArray); {
            int[] reversed = new int[HwArray.length];
            for (int i=0; i<HwArray.length; i++) {
                reversed[i] = HwArray[HwArray.length - 1 - i];
            }
            return reverse;
        }
    }

}

抱歉,我还在学习。 我试图颠倒所有元素的顺序,但我一直收到错误消息。 难道我做错了什么?

我认为,从概念上讲,颠倒数组中元素顺序的最简单方法是将大小为N的数组的前一半中的每个ith元素与后一半中的第N-ith元素交换:

int[] reversed = new int[10];
for (int i=0; i < HwArray.length/2; ++i) {
    reversed[i] = HwArray[HwArray.length-1-i];
    reversed[HwArray.length-1-i] = HwArray[i];
}

演示在这里:

IDEOne

有很多错误:

首先,应将它return reversed而不是return reverse

然后,您将无法在方法内部定义任何方法(此处,在主方法内部定义了方法反向)

然后,您可以做一件事,删除以下两个花括号:1:刚好在int[] reverse(int[] HwArray)括号2:在最后一行的结尾花括号

最后,应该是int[] reverse(int[] HwArray) { int[] reverse(int[] HwArray); { int[] reverse(int[] HwArray); {

Comparator<Integer> comparator = new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
};

// option 1
Integer[] array = new Integer[] { 11, 44, 4, 3, 123 };
Arrays.sort(array, comparator);

// option 2
int[] array2 = new int[] {11, 44, 4, 3, 123};
List<Integer>list = Ints.asList(array2);
Collections.sort(list, comparator);
array2 = Ints.toArray(list);

// option 3
List<Integer> integersList = Ints.asList(arr);
Collections.sort(integersList, Collections.reverseOrder());

老实说,您实际上离我们并不遥远。 reverse函数实际上似乎可以正常工作,但是您会遇到各种奇怪的语法错误,甚至没有调用reverse方法。 尝试这样做:

  1. reverse方法移到定义main的类内。 如果要直接从main调用它,则必须使其成为静态方法。

  2. 摆脱第17和25行上多余的花括号。

  3. 声明reverse时,请删除第18行的分号。 它不应该在那里。

  4. reverse方法试图返回一个名为reverse的变量。 这就是方法的名称,您不能这样做。 我想你的意思是要reversed

  5. 用随机数初始化数组后,实际上调用reverse方法。 然后再次打印出阵列以验证其是否有效。

  6. 注意,实际上并没有在第11行上打印出数组的值。应该是System.out.println("HwArray[" + i + "]=" + HwArray[i]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM