Condition if() java
Résolu
Utilisateur anonyme
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je suis en train de me faire un petit programme qui n'a pas une très grande utilité mais qui permet de faire un petit quelque chose en java :)
Le but de ce programme est tout simplement de comparer deux listes de lettres et nous ressort les lettres qui sont dans les deux "tas"....
Le problème est que, au moment du if(numberTry >= 3), il ne rentre jamais dans cette boucle alors que la condition est vérifiée (j'ai regardé avec un system.out....).
J'appelle donc à l'aide pour savoir ce qui ne vas pas xD
Mon code : https://pastebin.com/eDC4aX7B
Merci de votre aide!
Je suis en train de me faire un petit programme qui n'a pas une très grande utilité mais qui permet de faire un petit quelque chose en java :)
Le but de ce programme est tout simplement de comparer deux listes de lettres et nous ressort les lettres qui sont dans les deux "tas"....
Le problème est que, au moment du if(numberTry >= 3), il ne rentre jamais dans cette boucle alors que la condition est vérifiée (j'ai regardé avec un system.out....).
J'appelle donc à l'aide pour savoir ce qui ne vas pas xD
Mon code : https://pastebin.com/eDC4aX7B
Merci de votre aide!
A voir également:
- Condition if() java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Excel cellule couleur si condition texte - Guide
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
2 réponses
C'est quoi cette manière toute moche de coder avec des variables globales !?
"au moment du if(numberTry >= 3), il ne rentre jamais dans cette boucle"
FAUX, il y rentre ! C'est dans la boucle suivante if(!end) qu'il ne rentre pas !
"end" est initialisée à true dans "init(0)" au début du main, or il n'y a jamais de "end=false", donc la valeur de "end" est toujours true, et if(!end) n'est jamais satisfaite.
Mais à mon avis tu as sérieusement besoin de revoir l'architecture de ton programme !
Là ce n'est pas du Java, ça y ressemble très vaguement mais l'esprit n'y est pas...La confiance n'exclut pas le contrôle
"au moment du if(numberTry >= 3), il ne rentre jamais dans cette boucle"
FAUX, il y rentre ! C'est dans la boucle suivante if(!end) qu'il ne rentre pas !
"end" est initialisée à true dans "init(0)" au début du main, or il n'y a jamais de "end=false", donc la valeur de "end" est toujours true, et if(!end) n'est jamais satisfaite.
tabTry [tab] = writeCharTab(enter(JOptionPane.showInputDialog("Entrez les lettres (série " + numberTry + ")(" + (sizeMax-1) + " caractères max):"))); System.out.println(numberTry); if(numberTry >= 3) { System.out.println("OK 1"); similar = finder(tabTry[0], tabTry[1]); System.out.println("end = "+end); while(!end) { System.out.println("OK 2");
Mais à mon avis tu as sérieusement besoin de revoir l'architecture de ton programme !
Là ce n'est pas du Java, ça y ressemble très vaguement mais l'esprit n'y est pas...La confiance n'exclut pas le contrôle
En simplifié:
;-)
package hacktrack.letterfinder; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.swing.JOptionPane; public class LetterFinder2 { private String[] inputs; public LetterFinder2(int numberTry) { this.inputs = new String[numberTry]; } public Set<String> start() { enterText(); return findCommonsLetters(); } private void enterText() { for (int i = 0; i < inputs.length; i++) { inputs[i] = JOptionPane .showInputDialog("Entrez les lettres (série " + (i+1) + ")"); } } private Set<String> findCommonsLetters() { Set<String> result = toSet(inputs[0]); String input; for (int i = 1; i < inputs.length; i++) { Set<String> tmpList = toSet(inputs[i]); result.retainAll(tmpList); } return result; } private Set<String> toSet(String s) { Set<String> tmpSet = new HashSet<String>(); for (int i = 1; i < s.length(); i++) { tmpSet.add(s.substring(i, i + 1)); } return tmpSet; } public static void main(String[] args) { LetterFinder2 lf2 = (new LetterFinder2(3)); System.out.println("Lettres communes: " + lf2.start()); } }
;-)
Tant qu'on y est, moi j'avais fait ça ;-)
import java.util.Set; import javax.swing.JOptionPane; public class LetterFinder { private static Set<Character> getSet() { String str = JOptionPane.showInputDialog("Entrez un ensemble de lettres ('Annuler' pour arrêter)"); if (str==null) return null; Set<Character> set = new java.util.TreeSet<Character>(); for (char c : str.toCharArray()) set.add(c); return set; } public static void main(String[] args) { for (Set<Character> localSet=getSet(), globalSet=localSet; localSet!=null; localSet=getSet()) { globalSet.retainAll(localSet); JOptionPane.showMessageDialog(null, "Ensemble commun : "+globalSet); } } }