2015-11-04 76 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. 举动背后指数朝前(跳过回值)

重复。

不会。你不会得到一个代码示例。这太像功课了,但我希望这有助于。