If else imbriqué qui ressort toujours un resultat nul

Résolu
Gary -  
 Gary -
Bonjour,

mon programme analyse les lignes d'un fichier log et fais des test sur les valeurs
        this.commande = this.getCommand();

 public String getCommand(){
  String commande =null;
  String UpOrDownLink = null;
  String LogicalChannel = null;
  String TransportChannel = null;
  if (this.isType("MU")){
    UpOrDownLink = this.getField(24);
    LogicalChannel = this.getField(25);
    TransportChannel = this.getField(26);
    if (UpOrDownLink == "D" & LogicalChannel == "DC" ) {
     commande = "DL-DCCH-Message ";
   }else if (UpOrDownLink == "U" & LogicalChannel == "DC" ) {
     commande = "UL-DCCH-Message ";
   }else if (UpOrDownLink == "D" & LogicalChannel == "CC" ) {
     commande = "DL-CCCH-Message ";
   }else if (UpOrDownLink == "U" & LogicalChannel == "CC" ) {
     commande = "UL-CCCH-Message ";
   }else if ( LogicalChannel == "PC" ) {
     commande = "PCCH-Message ";
   }else if ( LogicalChannel == "BC" & TransportChannel == "FA" ) {
     commande = "BCCH-FACH-Message ";
   }else if ( LogicalChannel == "BC" & TransportChannel == "B" ) {
     commande = "BCCH-BCH-Message ";
   }
  }

  return commande;
 }


LA fonction retourne toujours null ... je ne comprends pas

A voir également:

3 réponses

Gary
 
problème résolu

il fallait utiliser la méthode contentEquals pour effectuer des comparaisons
1
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bien sûr, un objet ne doit jamais être comparé avec l'opérateur == qui ne fait que comparer la valeur des références, contrairement à la méthode equals...
0
Gary
 
merci KX j'avais appris ça un jour mais j'avais complètement zappé !
0
mahdu972 Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   18
 
Bonjour,
le plus simple c'est de voir les valeurs que vous testez avant votre if.
0
Gaet0 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Si la fonction retourne null, c'est parce que le code ne rentre dans aucune de vos conditions, et vous n'avez apparemment pas de conditions else ...

Dans un premier temps il faut essayer d'afficher toutes les variables dans la méthode pour comprendre ce qui ne va pas. Peut être que le this.isType est autre que "MU" ou, qu'un ou plusieurs des this.getfield() pose problème.

Je remarque aussi que vous utilisez l'opérateur bitwise '&' plutot que l'opérateur logique '&&'. Je n'arrive pas à comprendre l'intérêt d'évaluer les deux conditions même si la partie gauche est fausse.

Peut être serait-il plus simple d'utiliser '&&' qui va évaluer la condition de gauche dans un premier temps et si elle est fausse va directement continuer au bloc suivant.
0