Java数组交换

时间:2015-11-04 17:16:49

标签: java arrays swap

在我的第二个数组中,我正在尝试交换我的数组,但我不知道该怎么做。

例如,在我的第一个数组中,数字如下所示:

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();
        }
    }

}

1 个答案:

答案 0 :(得分:0)

你不是真的&#34;交换&#34;,但交换是你正在做的事情的一个组成部分。

你需要两个&#34;索引&#34;,一个从前到后走一排,另一个从后到前走。当两个指数在中间相遇时#34;你已经完成了。

然后你的算法看起来像:

  1. 将前面的索引向后移动(跳过前面的值)
  2. 交换两个索引的值。
  3. 将前面的索引向后移动(取下交换的值)
  4. 将背部指数向前移动。 (下车交换价值)
  5. 将后方索引向前移动(跳过后退值)
  6. 重复,直到两个指数在中间相遇。

    没有。你没有得到代码示例。这有点像家庭作业,但我希望这会有所帮助。