2015-11-04 71 views
0

在我的第二個數組中,我試圖交換我的數組編號,但我不知道該怎麼做。Java陣列交換

例如,在我的第一個數字陣列看起來像這樣:

1.5 2.5 3.5 ....19.5 20.5 

所以在接下來的陣列需要是這樣的:

1.5 20.5 2.5 19.5 3.5 .... 

我使它看起來像這樣:

20.5 19.5 ......3.5 2.5 1.5 

這是我的代碼:

public static void main(String[] args) { 

    double A[] = new double[20]; 
    int i ; 
    double K, C; 

    BufferedReader br = new BufferedReader(
     new InputStreamReader(System.in)); 

    System.out.print("K="); 
    try { 
     K = Double.parseDouble(br.readLine()); 
    } 
    catch (Exception ex) { 
     System.out.println("input-output error"); 
     return; 
    } 

    Random r = new Random(); 
    i=0; 
    if (K<=0){ 
     do{ 
     A[i]= r.nextDouble()*20; 
     i++; 
     }while (i<20); 

    }else{ 
     i=2; 
     A[0]=K; 
      A[1]=K+1; 
      do { 
       A[i]= A[i-1]+A[i-2]; 

      i++; 


     }while (i<20); 
    } 

     System.out.println("A:"); 
     for (i=0; i<20; i++) { 
      System.out.printf("%.2f\t", A[i]); 
      if (i==9) System.out.println(); 
      if (i==19) System.out.println(); 
     } 


     for (i=1; i<10; i++) { 
      C = A[i-1]; 
      A[i] = A[19-i]; 
      A[19-i] = C; 
     } 

     System.out.println("\nB:"); 
     for (i=0; i<20; i++) { 
      System.out.printf("%.2f\t", A[i]); 
      if (i==9) System.out.println(); 
      if (i==19) System.out.println(); 
     } 
    } 

} 
+0

你是指什麼交換?你的意思是顛倒陣列嗎? –

+0

不,不是相反的。但我需要改變陣列看起來像這樣: 1.5 20.5 2.5 19.5 3.5 .... –

+0

這只不過是反向 – Rehman

回答

0

你並不真正「交換」,但交換是你正在做的事情的一部分。

您需要兩個「索引」,一個從前向後走陣列,另一個從後向前走。當兩個指數「在中間相遇」時,你就完成了。

然後你的算法是這樣的:

  1. 將前指數向後(跳過前值)
  2. 交換價值在兩個指標。
  3. 將前端索引向後移(取消交換值)
  4. 將後端索引移向前端。直到兩個指標在中間相遇(下車交換價值)
  5. 舉動背後指數朝前(跳過回值)

重複。

不會。你不會得到一個代碼示例。這太像功課了,但我希望這有助於。