2014-08-28 48 views
0

所以我有我的主要方法,應該有一個1-20打印數組,然後我應該在循環中傳遞該數組每個偶數次出現。 swap方法將使用下一個數字切換數組中的偶數......因此在數組[1,2,3,4,5 ...]中,2和3會切換,4和5會切換。如何在交換後返回數組?

這裏是主要的方法:

public class Lab_01_Tester { 

public static void main (String[] args) throws FileNotFoundException 
{ 
    PrintWriter writer = new PrintWriter("Lab_01_nums.txt"); 
    int[] randArray = Lab_01_ArrayUtilities.buildIntArray(20, 10, 29); 

    String randArrayString = Arrays.toString(randArray); 

    writer.write(randArrayString); 
    System.out.print(randArrayString); 

    writer.close(); 

    for (int i = 0; i < randArray.length - 1; i++) 
    { 
     if (randArray[i] % 2 == 0) 
     { 
      Lab_01_ArrayUtilities.swap (randArray, i, i + 1); 
      i = i +1; 
     } 

     else; 

    } 
    System.out.println(); 
    System.out.print(randArrayString); 

} 

} 

這裏是randArray是越來越傳遞給swap方法:

public static int[] swap (int[] randArray, int i, int j) 
{ 
    int temp = randArray[i]; 
    randArray[i] = randArray[j]; 
    randArray[j] = temp; 

    return randArray; 
} 

我的問題是,當數組傳遞回來,這是不變

+0

也許就像這樣,'randArray = Lab_01_ArrayUtilities.swap(randArray,我,我+ 1);'? – 2014-08-28 20:03:25

+1

您是否仔細測試過?只是一個快速閱讀,但它看起來像swap()應該工作。 – markspace 2014-08-28 20:08:47

+0

是的,沒有必要返回數組。該方法將工作不管。可能是其他代碼的問題,它看起來像'else;'的東西不好。 – Kayaman 2014-08-28 20:10:29

回答

3

你不需要需要返回任何東西(假設你改變了方法s忽略返回void) - 數組的元素已被換入原地。

例如:

int[] array = { 3, 5, 4 }; 
swap(array, 0, 2); 
System.out.println(array[0]); // 4 
System.out.println(array[2]); // 3 

這是您的實際問題:

System.out.print(randArrayString); 

你一點都沒變randArrayString,因爲你最後打印它 - 所以難怪它打印相同的值。你只需要重新添加這一行,只是打印出來前:

randArrayString = Arrays.toString(randArray); 
+0

當我打印完整的數組時,儘管沒有任何改變。 – 2014-08-28 20:10:48

+0

@NikDesai:看我的編輯 - 你不打印陣列的當前內容......你打印的是你之前打印的同一個字符串。 – 2014-08-28 20:11:15

+0

哦哇..非常感謝你,只是救了我幾小時的發誓:) – 2014-08-28 20:13:36