Demande d'aide.. nouveau chez vous les Javaien(ne)
abgl007
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
voila un petit code java pour échanger deux valeurs mais sa marche pas, je ne sais pas pourquoi????
Aider moi a trouver l'erreur SVP..
merci
====================
voila un petit code java pour échanger deux valeurs mais sa marche pas, je ne sais pas pourquoi????
Aider moi a trouver l'erreur SVP..
merci
====================
package metier;
import java.util.Scanner;
public class MethodeEchangeValeurs {
public static void main(String[] args) {
int a, b;
Scanner clavier = new Scanner(System.in);
System.out.print("Entrez une valeur pour a : ");
a = clavier.nextInt();
System.out.print("Entrez une valeur pour b : ");
b = clavier.nextInt();
System.out.println("a = " + a + " et b = " + b);
echange(a,b);
System.out.println("Après l'échange ");
System.out.println("a = " + a + " et b = " + b);
}
public static void echange(int x, int y) {
int tmp = x;
x=y;
y=tmp;
}
}
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Demande d'aide.. nouveau chez vous les Javaien(ne)
- Nouveau site coco chat - Accueil - Réseaux sociaux
- Créer un nouveau compte gmail - Guide
- Comment créer un nouveau groupe sur whatsapp - Guide
- Créer un nouveau compte google - Guide
- Nouveau tag ajouté - Forum Huawei
1 réponse
Bonjour,
Ta méthode échange bien x et y. Mais ça n'a aucun effet sur a et b.
C'est normal, ça s'appelle le passage par valeur, c'est comme ça que travaille Java avec les types primitifs.
Remarque : pour les objets on parlera plutôt de passage par référence, ce qui permet d'altérer le contenu de l'objet (même si la référence est également passé par valeur donc on ne peut pas la changer non plus).
Ta méthode échange bien x et y. Mais ça n'a aucun effet sur a et b.
C'est normal, ça s'appelle le passage par valeur, c'est comme ça que travaille Java avec les types primitifs.
Remarque : pour les objets on parlera plutôt de passage par référence, ce qui permet d'altérer le contenu de l'objet (même si la référence est également passé par valeur donc on ne peut pas la changer non plus).
c'est quoi la solution alors dans ce cas..
merci
Si tu veux le faire il faudrait passer par des objets et altérer leurs contenus, par exemple avec AtomicInteger.
package metier; import java.util.Scanner; import java.util.concurrent.atomic.AtomicInteger; public class MethodeEchangeValeurs { public static void main(String[] args) { Scanner clavier = new Scanner(System.in); System.out.print("Entrez une valeur pour a : "); AtomicInteger a = new AtomicInteger(clavier.nextInt()); System.out.print("Entrez une valeur pour b : "); AtomicInteger b = new AtomicInteger(clavier.nextInt()); System.out.println("a = " + a + " et b = " + b); echange(a, b); System.out.println("Après l'échange "); System.out.println("a = " + a + " et b = " + b); } public static void echange(AtomicInteger x, AtomicInteger y) { int tmp = x.get(); x.set(y.get()); y.set(tmp); } }