Probleme comparaison de 2 char

Résolu
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. 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...
    @+
    1. merci ça marche bien.
      mais pourquoi la 1ere syntaxe n'a pas marché?
      1. 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');
        } 
        1. Salut,
          tu peux essayer cela comme condition:
          while (!((b=='o')|(b=='n')));
          @+