簡體   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