Condition if() java [Résolu/Fermé]

Signaler
Messages postés
244
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
6 février 2014
-
Messages postés
15929
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2020
-
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!




2 réponses

Messages postés
15929
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2020
2 629
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.

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
Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
967
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());
	}
}


;-)
Messages postés
15929
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2020
2 629
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);
        }
    }
}