Les Allergies
Alimentaires
Posez votre question Signaler

Java - newbie - comparer des caracteres [Résolu]

niahoo 249Messages postés 24 décembre 2007Date d'inscription 23 mai 2010Dernière intervention - Dernière réponse le 20 nov. 2009 à 01:14
Hello,
j'essaie de me mettre au java, et pour commencer je voulai sdévelopper une petite appli console toute bête qui m'écrive la fameuse suite non-mathématique des années lycées :
1
11
21
1211
111221
etc..
et bon ça ne fonctionne pas comme je voudrais, je n'y connais pas encore assez, mais j'ai condensé le problème:


public class blablalbla {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String aaa = "1";
		String bbb = "1";
		System.out.println("est-ce que "+aaa + " et "+bbb+ " sont identiques ?");
		if(aaa == bbb) {
			
			System.out.print("oui");
		}
		else {
			System.out.print("non");
		}
		aaa = "2";
		bbb = "22".substring(1,2);
		System.out.println("est-ce que "+aaa + " et "+bbb+ " sont identiques ?");
		if(aaa == bbb) {
			
			System.out.print("oui");
		}
		else {
			System.out.print("non");
		}
	}

}

et voilà le rendu console :
est-ce que 1 et 1 sont identiques ?
ouiest-ce que 2 et 2 sont identiques ?
non

tiens j'ai zappé de sauter des lignes ^^.
bref. J'ai aussi remarqué dans la fenetre des espions (dans eclipse) que au premier comparatif, aaa et bbb avaient toutes les deux comme valeur : "1" (id=25) (pas sur du nombre..)
tandis qu'au second comparatif, ils avaient une valeur id différente.
Comment faire pour comparer mes caractères de manières à ce que seulement la valeur alphanumérique de la lettre soit prise en compte.
Faut il utiliser un tableau de chars ? (je ne sais pas encore m'en servir mais si c'est la seule solution, pourquoi pas).
Merci !
Lire la suite 

Java - newbie - comparer des caracteres »

10 réponses
Réponse
+0
moins plus
Sinon pour comparer tes chaines il est préférable d'utiliser "if(aaa.equals(bbb))" qui marche beaucoup mieux.

Ensuite pour transformer tes variables en Integer tu peux faire comme suit :

int aa,bb;
String aaa,bbb;

aa=Integer.parseInt(aaa);
bb=Integer.parseInt(aaa);

Loulou
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Qu'est-ce qu'il se passe arth?

int aa,bb;
String aaa,bbb;

aa=Integer.parseInt(aaa);
bb=Integer.parseInt(aaa); >>>>>>>>> bb=Integer.parseInt(bbb); (un coller non modifié ?)

Et à partir de là on peut faire:

if(aa == bb) {
...
....

Ou bien entendu directement:

if(aaa.equals(bbb)) {
.....

Cordialement,

Dan
Ajouter un commentaire
Réponse
+0
moins plus
Le retour des vacances au loin ....

Pas envie de retravailler :)

Oui un copier/coller foireux je l'avoue :D
danimo- 15 oct. 2009 à 11:29
Oui je comprend...
Encore un problème de return quoi!!!
Moi j'ai trouvé la solution, je ne revien pratiquement plus.

Dan
Ajouter un commentaire
Réponse
+0
moins plus
:)

Je ferais bien mais avant il faudrait que je me lance en politique histoire de gagner de l'argent sans rien faire :)

Rah non c'est pas pour moi ça encore que siroter des sodas sur une plage de sable chaud ca me conviendrait, pour peu qu'il y ait un Hotspot wifi :D:D
Ajouter un commentaire
Réponse
+0
moins plus
Ok, je vais aller tester vos deux solutions, et l'algo devrait fonctionner ensuite.

Par contre, pouvez vous m'expliquer pourquoi les deux variables sont considérées comme différentes ?

merci (et le wifi à la plage c'est très dangereux, j'oserai jamais amener un laptop sur le sable) (quoique si y a moyen de se caler dans le hamac avec le verre de puch posé sur la tortue à côté avec la grande paille et les vahinés à côté on peut discuter)
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Si tu compare les 2 String comme ceci:

if (aaa == bbb) tu obtiens true si les 2 références concernent un même objet.

Avec if (aaa.equals(bbb)) tu compares les 2 contenus.

Tu peux aussi faire:

int resultat = aaa.compareTo(bbb)

Si resultat < 0 aaa est < bbb
= 0 aaa est = bbb
> 0 aaa est > bbb

Dan
Ajouter un commentaire
Réponse
+0
moins plus
D'accord.

Je ne comprends pas l'utilité de vérifier la référence à l'objet mais je suppose que ça me sera bien utile un jour où l'autre.

En tout cas merci beaucoup, mon algo tourne nickel. Et il fait bien ramer un PC au passage ^^


(PS : j'ouvrirais un autre topic si besoin, mais juste au passage, Avec eclipse j'ai recopié une appli d'apprentissage qui permet juste d'écrire un texte dans un champ texte, et un bouton copier recopie ce qu'on à écrit dans un autre champ, bref, quand je l'exporte en .JAR, pas de probleme, elle se lance nickel (au début le manifest m'a fait galérer pour la classe main mais ça c'est réglé maintenant)

Par contre, le simple programme au dessus, qui est juste en console donc, ne se lance pas. faut-il le lancer obligatoirement en ligne de commande, ou peut-on le lancer via clic sur un .JAR ? (j'ai testé avec un scanner.in pour provoquer une pause dans la console, à la manière d'un scanf en c++

merci =
Ajouter un commentaire
Réponse
+0
moins plus
Ton programme se lance, mais sans ouverture de la console MSDOS.
Il faut créér un .bat contenant:

java -jar "leCheminDeTon.jar" que tu nomme du même non que le .jar (ou un autre nom) avec l'extension .bat

Tu cliques sur le .bat obtenu, et la console s'ouvrira...

Exemple:

java -jar "c:\\Mes programmes\\leNomDu.jar"

Dan
Ajouter un commentaire
Réponse
+0
moins plus
wow ça faisait un bail.

merci du tuyau, je testerai à l'occasion. Pour l'isntant je suis aprti sur le c++ plutôt que le java.. question de goûts !

merci en tout cas , ++
Ajouter un commentaire
Ce document intitulé « Java - newbie - comparer des caracteres » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?