Condition if() java

Résolu/Fermé
Utilisateur anonyme - 8 août 2012 à 14:25
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 8 août 2012 à 21:34
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!




A voir également:

2 réponses

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
Modifié par KX le 8/08/2012 à 15:07
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
0
HackTrack Messages postés 618 Date d'inscription vendredi 26 juillet 2002 Statut Membre Dernière intervention 13 juillet 2013 972
8 août 2012 à 21:31
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());
	}
}


;-)
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
Modifié par KX le 8/08/2012 à 21:34
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);
        }
    }
}
0