Bonjour!
Y aurait-il une méthode plus élégante d'effectuer le test suivant ?Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(codeSousProduit.equals("05")||codeSousProduit.equals("27")||codeSousProduit.equals("28"))
Bonjour!
Y aurait-il une méthode plus élégante d'effectuer le test suivant ?Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(codeSousProduit.equals("05")||codeSousProduit.equals("27")||codeSousProduit.equals("28"))
Ben malheuresement Non ! ça se saurait si ça existait.
Merci de lire les règles du forum et surtout celle là Message clair et précis.
Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.
Si tu as beaucoup de valeurs à tester, tu peux mettre tes String dans un set. Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Set<String> set = new HashSet<>(); set.add("05"); set.add("28"); set.add("27"); if (set.contains(codeSousProduit)) { // traitement }
Autre possibilité :
Au delà de l'élégance, l'intérêt de cette solution, ainsi que celle d'AlexRNL,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7String valeursOk = "[05][27][28]"; String codeSousProduit = "27"; if (valeursOk.contains("[" + codeSousProduit + "]")){ System.out.println("gagné"); }
c'est de pouvoir construire dynamiquement ta condition.
La liste "05","27","28" va certainement évoluer et si tu restes sur le code présenté, il te faudra reprendre ton application.
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Si ton code est sur deux caractère tu peux faire ça
et si développe pour le plaisir un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int x = Integer.parseInt(codeSousProduit); if ((x-5)*(x-27)*(x-28)==0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int x = Integer.parseInt(codeSousProduit); if (x*x*x-70*x*x+1031*x==-3780)
Joli bricolage très geek, mais on a parlé d'élégance, ce qui en général est plutôt question de maintenabilité et de faire les choses de sorte qu'elles soient immédiatement évidentes.
Certes c'est pas des maths très compliqués, mais ils ne se justifient pas.
C'est certes très très efficace. Mais une table de hachage l'est suffisamment, sans dépendre du contenu des String, et pour être honnête String.contains() est suffisant aussi.
Et, plus important, if(x == 5 || x == 27 || x == 28) est encore plus efficace, et est essentiellement la même chose en plus clair.
on m'a garanti que la liste de ces valeurs ne changerait pas de si tôt![]()
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Partager