Java-функция, которая принимает целочисленный ввод n и вращает массив n пробелов - PullRequest
0 голосов
/ 15 февраля 2019

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

Моя цель - взятьпользовательский ввод и вращение массива сколько угодно раз на основе его целочисленного ввода.Сначала я пытался заставить массив развернуться, чтобы увидеть его смещение, но у меня есть несколько ошибок в моей функции, которые не позволяют мне компилировать.

Редактировать: я знаю, что использовал список вместо использования arr,Я смотрел на пример и случайно набрал его в

Вот мой код:

import java.util.Scanner;

public class Project1P2 {
    public static void main(String[] args) { 
        int[] arr1 = {2,4,6,8,10,12};
        int[] arr2 = shift(arr1);

        Scanner input = new Scanner (System.in);
        System.out.print("Here is the Array: " + arr1);
        System.out.println("Enter a number to shift array: ");
        int n = input.nextInt();
    }

    public static int[] shift(int[] arr)
    {
        int[] arrShiftDone = new int[list.length];
        for (int i = 0, j = arrShiftDone.length - 1; i < list.length; i++, j--)
        {
            arrShiftDone[j] = list[i];
        }
        return arrShiftDone;
    }       
} 

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Вам нужно исправить пару вещей:

  1. shift метод никогда не вызывается из метода main, что означает, что он ничего не будет делать с массивом
  2. В методе shift вы используете list, тогда как аргумент объявлен как arr

Ниже приведен пример метода, который сдвигает массив:

public static int[] shift(int[] arr, int n) {
    if(n > arr.length) 
        n = n%arr.length;

    int[] result = new int[arr.length];

    for(int i=0; i < n; i++){
        result[i] = arr[arr.length-n+i];
    }

    int j=0;
    for(int i=n; i<arr.length; i++){
        result[i] = arr[j];
        j++;
    }

    return result;
}
0 голосов
/ 15 февраля 2019

Ошибка компиляции из-за того, что переменная list неизвестна.Следует использовать аргумент arr вместо list внутри метода shift(int[] arr).

0 голосов
/ 15 февраля 2019

Ваша ошибка в том, что в вашем методе смены вы используете list, это должно быть arr.Я обновил это ниже.Я также включил метод смены.Отредактировано, чтобы включить отрицательные сдвиги.

    public static void main(String[] args) {

        int[] arr1 = { 2, 4, 6, 8, 10, 12 };
        int[] arr2 = reverseArray(arr1);

        Scanner input = new Scanner(System.in);
        System.out.println("Here is the Array: " + Arrays.toString(arr1));
        System.out.print("Enter a number to shift array: ");
        int n = input.nextInt();
        int[] arr3 = shiftArray(arr1, n);
        System.out.println("Here is the shifted Array: " + Arrays.toString(arr3));

    }

    public static int[] reverseArray(int[] arr) {
        int[] arrShiftDone = new int[arr.length];
        for (int i = 0, j = arrShiftDone.length - 1; i < arr.length; i++, j--) {
            arrShiftDone[j] = arr[i];
        }
        return arrShiftDone;
    }

public static int[] shiftArray(int[] arr, int shift) {
        int[] arrShiftDone = new int[arr.length];
        shift = shift % arr.length;
        if (shift < 0) {
            shift = arr.length + shift;
        }
        for (int i = 0 + shift, j = 0; j < arr.length; i++, j++) {
            if (i >= arr.length) {
                arrShiftDone[j] = arr[i - arr.length];
            } else {
                arrShiftDone[j] = arr[i];
            }
        }
        return arrShiftDone;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...