Comment puis-je échanger deux entiers dans un tableau, où ma méthode prend deux entiers et un tableau à partir d'principal?
J'appelle ma méthode d'échange en main, mais ça ne change rien. Ce que je fais mal?
public static void main(String[] args){
int mainArr[] = new int[20];
for(int i = 0; i<mainArr.length; i++){
swapper(3, 14, mainArr);
System.out.print(i + mainArr[i] + " ");
}
}
public static void swapper (int a, int b, int[] mainArr){
int t = mainArr[a];
mainArr[a] = mainArr[b];
mainArr[b] = t;
}
Mon code rendements
0, 1, 2, 3,...19
normal dans l'ordre croissant, où je le veux pour échanger le 4e et 15e élément.
- soient a,b des entiers d'un swap ou d'indices de votre tableau principal?
- Hors sujet -> Pourquoi êtes-vous en invoquant votre swapper à partir de l'intérieur d'une boucle?
- Je veux a et b pour remplacer dans le tableau
- Pas de hors sujet... s'il effectue la permutation d'un même nombre de fois, il récupère le tableau d'origine. Quand il imprime le 4 valeur qu'elle serait de 4, quand il imprime le 15e il devrait être de 4 à nouveau.
- où faut-il être invoqué alors?
- Code fourni ne met rien dans le tableau de sorte que vous avez l'impression
i+0
- Je suppose que vous voulez que cela se produise une fois, avant d'imprimer le tableau, à droite?
- c'est même un meilleur catch... 🙂
Vous devez vous connecter pour publier un commentaire.
Déplacer l'appel de la méthode: -
à l'extérieur de votre boucle. Depuis, si la boucle s'exécute
even
nombre de fois, cela n'affectera pasla matrice.
Aussi, vous devez initialiser votre tableau d'abord, avant de permuter les éléments. Que vous devez faire avant d'appeler
swapper
.0
sDe l'écriture du code, comme ça:
va résoudre le problème. Le problème était qu'il se trouvait être l'appel de swap d'un même nombre de fois, il a eu un effet total de rien.
i +
🙂Vous appelez swapper le même nombre de fois qu'il y a des éléments de votre tableau.