si quelqu'un peux m'expliquer pourquoi avec se code :
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String re = "o";
//--------------------------
System.out.println("Saisissez un nombre :");
do {
int nb = sc.nextInt();
if(nb < 0)
{
System.out.println("c'est un nombre negatif !");
}
else if(nb > 0)
{
System.out.println("c'est un nombre positif !");
}
else
{
System.out.println("vous avez saisie un nombre nul !");
}
do{
System.out.println("re lancer ? (o/n)");
re = sc.nextLine();
}while(re != "o" && re != "n");
}while(re == "o");
}
}
lors de l’exécution le "re lancer" s'affiche 2 fois !
et, peu importe le caractère saisie, la boucle ne s’arrête jamais...
merci d'avance de votre aide
voilà le résultat une fois exécuter avec éclipse
- Edité par Nogueira Baptiste 30 juin 2019 à 22:04:01
Il faut mettre "sc.nextLine();" pour réinitialiser la saisie au deuxième do while. Et il faut utiliser un caractère (char)à la place du string pour la réponse.
import java.util.Scanner;
public class Filetest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char re = ' ';
int nb = 0;
//--------------------------
do {
System.out.println("Saisissez un nombre :");
nb = sc.nextInt();
if(nb < 0)
{
System.out.println("c'est un nombre negatif !");
}
else if(nb > 0)
{
System.out.println("c'est un nombre positif !");
}
else
{
System.out.println("vous avez saisie un nombre nul !");
}
do{
System.out.println("re lancer ? (o/n)");
sc.nextLine();
re = sc.nextLine().charAt(0);
}while(re != 'o' && re != 'n');
}while(re == 'o');
}
}
tsss, humour de dev de base le string, heu, enfin bref si tu utilise les strings, c'est ton choix ton droit mais utilise le comme il faut !
if(re.equals("o")) {
...
}
le == ne fonctionne pas avec des objets, il ne compare que la référence, pas la valeur.
nan nan, je n'utilise pas String.... mais je cherchais où était le problème... donc j'ai un peu tout changer avant etre venu chercher de l'aide ici.... ^^'
La méthode equals() regarde si les objets ont la même valeur. Pour des chaînes de caractères, ça veut dire qu'elles représentent le même texte.
L'opérateur == regarde s'il s'agit de la même instance String. Si tu as d'un côté une chaîne "o" écrite en dur dans ton code, et de l'autre une chaîne "o" qui a été tapée au clavier, elles peuvent être considérées comme différentes au sens de ==. Ce sont deux objets différents, même s'ils représentent le même texte.
Bonne pratique : toujours comparer les String avec equals.
La méthode equals() regarde si les objets ont la même valeur. Pour des chaînes de caractères, ça veut dire qu'elles représentent le même texte.
L'opérateur == regarde s'il s'agit de la même instance String. Si tu as d'un côté une chaîne "o" écrite en dur dans ton code, et de l'autre une chaîne "o" qui a été tapée au clavier, elles peuvent être considérées comme différentes au sens de ==. Ce sont deux objets différents, même s'ils représentent le même texte.
Bonne pratique : toujours comparer les String avec equals.
ok merci beaucoup !
Baptiste Nogueira
boucle java
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Baptiste Nogueira
Baptiste Nogueira
Baptiste Nogueira
Baptiste Nogueira
Baptiste Nogueira
Baptiste Nogueira