Rechercher : dans
Par :

Java - newbie - comparer des caracteres

Dernière réponse le 20 nov 2009 à 01:14:04 niahoo, le 15 oct 2009 à 01:16:09 
 Signaler ce message aux modérateurs

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 !

Meilleures réponses pour « Java newbie comparer des caracteres » dans :
Utiliser des accents et autres caractères spéciaux VoirDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça...
Javascript - Concaténation de chaînes de caractères VoirLe terme "concaténer" signifie joindre deux chaînes bout à bout pour n'en former qu'une seule. Dans la plupart des langages tels que PHP, la concaténation se fait avec le caractère ".". En javascript, il suffit d'utiliser le caractère plus (+) ou...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...
Java: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

arth, le 15 oct 2009 à 10:10:26

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
Le loup, solitaire et mystérieux.

Répondre à arth

2

danimo, le 15 oct 2009 à 11:01:43

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

Répondre à danimo

3

arth, le 15 oct 2009 à 11:18:19

Le retour des vacances au loin ....

Pas envie de retravailler :)

Oui un copier/coller foireux je l'avoue :D
Le loup, solitaire et mystérieux.

Répondre à arth

4

danimo, le 15 oct 2009 à 11:29:02

Oui je comprend...
Encore un problème de return quoi!!!
Moi j'ai trouvé la solution, je ne revien pratiquement plus.

Dan

Répondre à danimo

5

arth, le 15 oct 2009 à 11:30:29

:)

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
Le loup, solitaire et mystérieux.

Répondre à arth

6

niahoo, le 15 oct 2009 à 13:15:00

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)

Répondre à niahoo

7

danimo, le 15 oct 2009 à 13:49:15

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

Répondre à danimo

8

niahoo, le 15 oct 2009 à 15:17:56

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 =

Répondre à niahoo

9

danimo, le 15 oct 2009 à 22:13:24

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

Répondre à danimo

10

 niahoo, le 20 nov 2009 à 01:14:04

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 , ++

Répondre à niahoo