-1
votes

Méthode qui prend une entrée entière N et fait pivoter un réseau N Espaces

Mon objectif est de prendre la saisie d'un utilisateur et de faire pivoter la matrice si plusieurs fois en fonction de leur entrée entière. Au début, j'essayais d'avoir la matrice pour inverser juste pour le voir changer, mais j'ai quelques erreurs dans ma fonction qui ne me laisseront pas compiler.

Edit: Je sais que j'ai utilisé la liste d'utilisation au lieu d'utiliser arr. Je regardais un exemple et je l'ai frappé accidentellement. P>

Voici mon code: P>

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


0 commentaires

4 Réponses :


0
votes

Votre erreur est que dans votre méthode de décalage, vous utilisez code> list code>, il devrait être Ar code>. Je l'ai mis à jour ci-dessous. J'ai également inclus la méthode de changement de vitesse. Édité pour inclure des changements négatifs.

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


0 commentaires

0
votes

Vous devez corriger quelques choses:

  1. shift méthode ne s'appelle jamais à partir de la méthode principale principale, ce qui signifie qu'il ne fera rien au tableau
  2. Maj / code> La méthode doit avoir un autre argument pour le nombre d'endroits à déplacer, disons n
  3. dans Méthode , vous utilisez la liste alors que l'argument est déclaré comme Arr

    ci-dessous est un exemple de méthode qui déplace la matrice: xxx


0 commentaires

0
votes

L'erreur de compilation est que la liste variable est inconnue. Devrait utiliser l'argument Ar au lieu de la liste à l'intérieur de la méthode shift (int [] arr) . .


0 commentaires

0
votes

Vous pouvez utiliser arranges.stream (int [], int, int) code> méthode deux fois pour obtenir deux flux avec les gammes spécifiées du tableau: proches em> et loin em>, puis échangez-les et concat code> retourne dans un seul flux et obtenez ainsi une matrice décalée:

Source array: [2, 4, 6, 8, 10, 12]
Enter a number: 
3
Shifted array: [8, 10, 12, 2, 4, 6]


0 commentaires