Выведите все n целых чисел в массиве a в обратном порядке как одну строку целых чисел, разделенных пробелами.

Я пытаюсь написать программу, которая перевернет массив и распечатает его в одной строке с одним пробелом, разделяющим все элементы array.

Мой код:

static int[] reverseArray(int[] array) {
    int end = array.length-1;
    for(int i=end; i>=0; i--) {
        a[i] = a[i] + " ";
    }
    return String.valueOf(a);
}

Приведенный выше код выдает мне сообщение об ошибке:

incompatible types: String cannot be converted to int[]

Пример ввода:

1 4 3 2

Пример вывода:

 2 3 4 1

Вы пытаетесь перевернуть массив или пытаетесь распечатать его содержимое в обратном порядке? Код, который вы написали, похоже, пытается сделать и то, и другое

Robert Kock 11.04.2018 11:46
2
1
5 048
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

 a[i] = a[i] + " ";

Вот где вы делаете не так. Здесь массив a[] - это тип int, в котором вы пытаетесь удерживать String.

return String.valueOf(a);

В этой строке вы также пытаетесь сохранить объект массива. Что не вернет ожидаемых результатов.

Любое решение для этого?

Nithin Prasad 11.04.2018 11:42
static int[] reverseArray(int[] array) {
    int end = array.length-1;
    int a = new int[array.length];
    for(int i=end; i>=0; i--) {
        a[end - i] = array[i];
    }
    return a;
}

немного проработать это.

Vinay Prajapati 11.04.2018 12:45

Ваш код содержит несколько ошибок:

  1. Откуда взялся a? Что это за тип?
  2. Ваш метод говорит, что он возвращает int[], но вы пытаетесь вернуть String, будьте последовательны.

Вот модифицированная версия вашего кода:

    static String reverseArray(int[] array) {
        String result = "";
        int end = array.length-1;
        for(int i=end; i>=0; i--) {
            result += array[i] + " ";
        }
        return result;
    }

1. Массив a представляет собой целочисленный массив, входные данные принимаются из класса Scanner и затем передаются в функцию reverseArray. 2. Моя функция должна возвращать только int [], а не String. Извините за путаницу.

Nithin Prasad 11.04.2018 11:54
Ответ принят как подходящий

Для начала переменная a не определена, поэтому вам нужно такое объявление:

int[] a = new int[array.length];

Тогда в цикле нельзя присвоить строку элементу массива int a. Кроме того, метод возвращает массив, а не String, поэтому нет необходимости использовать операции String.

Тогда один из способов реализации этого метода с сохранением предоставленного цикла for:

static int[] reverseArray(int[] array) {
    int[] a = new int[array.length];
    int end = array.length - 1;
    for (int i = end; i >= 0; i--) {
        a[i] = array[end - i];
    }
    return a;
}

Вы также можете создать другой массив и сохранить элементы в другом массиве с помощью циклов while и распечатать этот второй массив. Вот как я пытался это сделать:

int[] revArr = new int[n];
int i = n-1;
int j = 0;
while(i>=0) {
     while(j<n-i){
         revArr[j] = arr[i];
         System.out.print(revArr[j] +" ");
         j++;
     }
i--;
}
#Aray reversing in python

#!/bin/python3

if __name__ == '__main__':
    n = int(input())
    arr = list(map(int, input().rstrip().split()))
    lst_ele=len(arr)
    for i in range(len(arr)):
        lst_ele-=1
        print(arr[lst_ele],end=' ')
            
    
    
        

Это пример реверсирования массива в Python. HACKERRANK DAY-7 вызов питону.

ABHISHEK MULIK 08.07.2020 19:27

Этот код должен работать на Python 3:

if __name__ == '__main__':
    n = int(input())
    arr = list(map(int, input().rstrip().split()))
    k = len(arr)
    for i in range(0,int(k)):
        k-=1
        print(arr[k], end=' ')

В противном случае убедитесь, что отступ правильный.

Более оптимизированная версия может быть:

for i in reversed(range (0, len(arr))):
    print(arr[i], end=' ')

Другие вопросы по теме