2016-11-12 69 views
1

我相信代碼可以正常工作,但測試人員代碼不是,我不知道爲什麼。我試圖交換數組中的第一個和最後一個值。交換數組中的第一個和最後一個值(JAVA)

public class ArrayMethods { 

private int[] values; 
public ArrayMethods(int[] initialValues) { 
    values = initialValues; 
    } 
public void swapFirstAndLast() { 
    int lastvalplace = values.length; 
    int firstval = values[0]; 
    values[0] = values[lastvalplace]; 
    values[lastvalplace] = firstval; 
} 

public static void main(String[] args) { 
    ArrayMethods initialValues = new ArrayMethods(int[] 50, 32, 4, 9, 2); 
    swapFirstAndLast = new swapFirstAndLast(values); 
} 

} 
+0

*「我相信代碼有效」*您應該測試它,並確保不只是假設。另外,「測試代碼」會發生什麼? – UnholySheep

+1

你是什麼意思「不起作用」?我猜它甚至沒有編譯,是嗎? – Gernot

+0

數組中的最後一個元素是'array [array.length - 1]'(而不是你的代碼中的'array [array.length]') –

回答

1

嗯,這是基本的swap + 0索引數組的情況。

int lastElement = values[values.length-1]; 
values[values.length-1] = values[0]; 
values[0] = lastElement; 

你的代碼生成ArrayOutOfBoundsException這給它打印你在哪個問題是線和信息索引是太大的堆棧跟蹤。它也給你指數。

你有類似的東西:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 26 
at ArrayMethods.swapFirstAndLast(ArrayMethods.java:10) 

記住,在Java數組的最後一個元素是array[array.length-1]

而且還有一個問題。您的主:

ArrayMethods initialValues = new ArrayMethods(new int[]{50, 32, 4, 9, 2}); 
initialValues.swapFirstAndLast(); 
相關問題