Как я могу расположить массив от 500 до 1 в массиве?(Джава) - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь упорядочить и распечатать массив, начиная с 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 голосов
/ 03 октября 2018

попробуй вот так.

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);
}
0 голосов
/ 03 октября 2018

Попробуйте:

int[] array = IntStream
        .range(0, 500) // get a stream of [0, 499]
        .map(i -> 500 - i) // map it to [500, 1]
        .toArray(); 
0 голосов
/ 03 октября 2018

Проблема в том, что вы устанавливаете 500 на позицию 500, но вы должны установить 500 на позицию 0. Это должно работать:

int [] aftel = new int [501];
for (int teller3 = 500; teller3 > 0; teller3--){
       aftel[500 - teller3] = teller3;
    }
System.out.println(Arrays.toString(aftel));
0 голосов
/ 03 октября 2018

В первом цикле вы используете 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;
}
0 голосов
/ 03 октября 2018

Проблема в том, что вы заполняете массив задом наперед.Начиная с самого значимого индекса и заканчивая индексом 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...