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; } }
4 Réponses :
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;
}
Vous devez corriger quelques choses:
shift code> méthode ne s'appelle jamais à partir de la méthode principale code> principale, ce qui signifie qu'il ne fera rien au tableau li>
-
Maj / code> La méthode doit avoir un autre argument pour le nombre d'endroits à déplacer, disons n code> li>
- dans
Méthode code>, vous utilisez la liste code> alors que l'argument est déclaré comme Arr code> li>
ol> ci-dessous est un exemple de méthode qui déplace la matrice: p> xxx pré> p>
L'erreur de compilation est que la liste variable code> est inconnue. Devrait utiliser l'argument
Ar code> au lieu de la liste
code> à l'intérieur de la méthode
shift (int [] arr) code>. P>.
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]