2013-04-24 91 views
1

大家好我目前正在創建一個程序,我想交換索引2和4.我有代碼完成,但我沒有收到輸出,當我運行程序時,我沒有收到錯誤交換方法麻煩-java

這裏是我有這麼FA:

public class test { 
    public static void main(String[] args) { 
     int[] intArray = {2,4,6,8,10}; 
    } 

    char[] intArray; 
    void swap(int i, int j, int[] arr) { 
     int t = arr[2]; 
     arr[2] = arr[4]; 
     arr[4] = t; 
     System.out.println(intArray); 
    } 
} 

回答

3

你永遠不會調用swap

public static void main(String[] args) { 
    int[] intArray = { 2, 4, 6, 8, 10 }; 
    new test().swap(1, 2, intArray); // use local array 
} 

// char[] intArray; not needed 

private void swap(int i, int j, int[] arr) { 
    int t = arr[i]; 
    arr[i] = arr[j]; 
    arr[j] = t; 
    System.out.println(Arrays.toString(arr)); // print array passed in 
} 
+0

謝謝我看到我所犯的錯誤。如何不需要「char [] intArray」 – ashley 2013-04-24 01:39:11

+0

1)它從靜態''main'方法中不可見2)它是一個char數組3)它沒有被初始化 - 'main'中的'intArray'實際上是一個不同的排列 – Reimeus 2013-04-24 01:41:41

0

swap方法看起來不錯,但它從來都不是調用。它看起來應該從main中調用。 main方法是靜態的,並且您沒有(或需要)test的實例,因此在您的swap方法中包含static。將您的main方法中的電話添加到swap

此外,你不swap使用ij - 與i4j取代2。另外,你從不使用char[] intArray,它被聲明爲一個實例變量;它可以安全地刪除。

0

你從來沒有真正調用swap方法,所以添加到您的main方法:

new test().swap(-1, -1, intArray); 

或者:

test testObj = new test(); 
testObj.swap(-1, -1, intArray); 

發送原始陣列PrintWriter只會給從Object.toString默認輸出。要獲取數組元素的值,請使用Arrays.toString。所以使用:

System.out.println(java.util.Arrays.toString(intArray));