2013-02-01 28 views
0

因此,我必須製作一個Java程序,其中用戶說他們要輸入多少值,在數組中輸入多個值,打印該數組。然後我必須顛倒數組中的元素(而不是反轉打印或創建一個新數組),並再次打印這些值。這是下面的代碼,我有:在int數組中重新整理int值java

package reversearray; 

import java.util.*; 

public class Swap_main { 

    /** 
    * Taylor Marino 
    */ 
    public static void main(String[] args) { 
     int arraysize = 0, junk, junk2; 
     Scanner reader = new Scanner(System.in); 
     System.out.println("How many values are you going to enter?"); 
     arraysize = reader.nextInt(); 
     int[] array = new int[arraysize]; 
     System.out.println("You will now be asked to enter your values, one at a time"); 
     for(int counter = 0; counter < arraysize; counter++){ 
      System.out.println("Enter next value"); 
      array[counter] = reader.nextInt(); 
     } 
     System.out.println("The values you entered are: "); 
     for(int counter2 = 0; counter2 < arraysize; counter2++) 
      System.out.print(array[counter2] + ", "); 
     for(int counter3 = 0, counter4 = arraysize; counter3 != counter4; counter3++, counter4--){ 
      junk = array[counter3]; 
      junk2 = array[counter4]; 
      array[counter4] = junk; 
      array[counter3] = junk2; 
     } 
     System.out.println("The values you entered are (in reverse order): "); 
     for(int counter5 = 0; counter5 < arraysize; counter5++) 
      System.out.print(array[counter5] + ", "); 
    } 

} 

但是我在這個循環中收到一個錯誤:

 for(int counter3 = 0, counter4 = arraysize; counter3 != counter4; counter3++, counter4--){ 
      junk = array[counter3]; 
      junk2 = array[counter4]; 
      array[counter4] = junk; 
      array[counter3] = junk2; 
     } 

我不明白什麼是錯在這裏,但它說,有一個與array[counter4] = junk; 錯誤是什麼我做錯了嗎?

+2

做錯的第一件事是不是說的錯誤是什麼:) –

+0

什麼錯誤? –

+0

@ user2033503。猜猜它在應用更改後現在對你有用 – user1760178

回答

3

這會給你一個ArrayOutOfBoundsException,因爲數組的索引從0到length-1。從counter4 = arraysize-1開始。

編輯:另外,你應該改變

counter3 != counter4 

counter3 < counter4 

,因爲奇數長度的數組,第一個條件也永遠不可能給你真實的。

0

變化

for(int counter3 = 0, counter4 = arraysize

for(int counter3 = 0, counter4 = arraysize-1

0

嘗試

for(int counter3 = 0, counter4 = arraysize -1 ; counter3 < counter4 ; counter3++, counter4--){ 

它的工作原理。例外消失了。

0

可能會稍微更consise,並且只使用一個循環變量

int maxIndex = array.length-1; // Zero based 
int midIndex = (maxIndex/2); // only swap half, otherwise will swap back to original 
for(int counter3 = 0; counter3 <= midIndex; counter3++){ 
    junk = array[counter3]; 
    array[counter3] = array[maxIndex-counter3]; 
    array[maxIndex-counter3] = junk; 
}