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