Probleme comparaison de 2 char

Résolu
Sleem_ Messages postés 76 Statut Membre -  
chuka Messages postés 980 Statut Membre -
Bonjour,
j'ai écrit ce code:

import java.math.*;
public class Puissance{

public static void main(String[]args){

double x,n;
char b;

do{
System.out.println("Donnez X: ");
x=LectureClavier.lireEntier();
System.out.println("Donnez n: ");
n=LectureClavier.lireEntier();
System.out.println("X^n= "+Math.pow(x,n));

do{
System.out.println("Voulez vous rejouer?(o/n)");
b=LectureClavier.lireChar();
}
while ((b!='o')|| (b!='n'));
}
while(b=='o');
}
}

Lors de son exécution, il calcule la puissance, mais il ne traverse pas l'instruction "voulez vous rejouer(o/n)" quelques soient les caractères que j'entre. il me la répète.
Je pense que le problème est dans la: while ((b!='o')|| (b!='n'));
J'ai introduit cette condition pour tester ou bien le caractère o (oui) ou bien le caractère n (non).
merci de bien m'aider à rectifier ce problème.
Cordialement.
Configuration: Windows XP
Firefox 3.0.16

4 réponses

  1. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    tu peux essayer cela comme condition:
    while (!((b=='o')|(b=='n')));
    @+
    0
  2. jacinthe87 Messages postés 204 Statut Membre 3
     
    Essai ce code:
    public static void main(String[]args){
    
    double x,n;
    char b='n';
    
    do{
    System.out.println("Donnez X: ");
    x=LectureClavier.lireEntier();
    System.out.println("Donnez n: ");
    n=LectureClavier.lireEntier();
    System.out.println("X^n= "+Math.pow(x,n));
    
    
    System.out.println("Voulez vous rejouer?(o/n)");
    b=LectureClavier.lireChar();
    
    }
    while(b=='o');
    } 
    0
  3. Sleem_ Messages postés 76 Statut Membre
     
    merci ça marche bien.
    mais pourquoi la 1ere syntaxe n'a pas marché?
    0
  4. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    si tu tapes 'o', b='o'=>b!='o' est faux mais b!='n' est vrai donc le résultat vaut vrai....
    et inversement si tu tapes 'n', b='n'=>b!='n' est faux mais b!='o' est vrai donc le résultat vaut vrai....
    et si tu tapes autre chose:b!='n' est vrai et b!='o' est vrai...
    @+
    0