如何将一个数组从500排列到1? (Java)

时间:2018-10-03 12:10:09

标签: java arrays sorting

我正在尝试排列和打印从500开始并在1处停止的数组 我已经使用以下代码尝试过此操作,但是将从1开始打印输出,直到500:

int [] aftel = new int [501];
for (int teller3 = 500; teller3 > 0; teller3--){
       aftel[teller3] = teller3;
    }
System.out.println(Arrays.toString(aftel));

但是使用下面的代码,数组将以正确的方式打印出,但是我试图在打印出值之前将数组完整地排列:

int [] aftel = new int [501];
for (int teller2 = 1; teller2 <= 500; teller2++){
        optel500[teller2] = teller2;
        System.out.print(optel500[teller2]+" ");
    }

5 个答案:

答案 0 :(得分:4)

在第一个循环中,您将teller3用作索引的值。这意味着索引500的值为500,与您想要的相反。

您还会对数组的大小感到困惑。

正确的方法是直接循环并从500中减去该值

int [] aftel = new int [500];
for (int teller3 = 0; teller3 < 500; teller3++){
    aftel500[teller3] = (500 - teller3) + 1;
}

或者对数组索引执行相同操作

int [] aftel = new int [500];
for (int teller3 = 500; teller3 > 0; teller3--){
   aftel[500 - teller3] = teller3;
}

答案 1 :(得分:3)

尝试:

int[] array = IntStream
        .range(0, 500) // get a stream of [0, 499]
        .map(i -> 500 - i) // map it to [500, 1]
        .toArray(); 

答案 2 :(得分:0)

这里的问题是您正在向后填充数组。从最高有效索引到最低索引1。要获得结果,您应该从索引1填充到最高有效索引。

引入另一个变量index = 1并以这种方式使用将解决此问题:

int [] aftel = new int [501];
int index = 1;

for (int teller3 = 500; teller3 > 0; teller3--){
    aftel[index] = teller3;
    index++;
}

以及另一种用于循环的衬里:

int [] aftel = new int [501];

for (int teller3 = 500, index = 1; teller3 > 0; teller3--, index++){
    aftel[index] = teller3;
}

System.out.println(Arrays.toString(aftel));

答案 3 :(得分:0)

问题是您在位置500上设置了500,但必须在位置0上设置500。 这应该起作用:

int [] aftel = new int [501];
for (int teller3 = 500; teller3 > 0; teller3--){
       aftel[500 - teller3] = teller3;
    }
System.out.println(Arrays.toString(aftel));

答案 4 :(得分:0)

尝试这样。

int noOfElements = 500;
int[] array = new int[noOfElements];

for (int i = 0; i < noOfElements; i++){
    array[i] = noOfElements - i;
}

for(int a : array){
    System.out.println(a);
}