Tableau : caractère + int ?
Résolu/Fermé
Vitaldix
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
-
19 mars 2013 à 22:56
Vitaldix Messages postés 116 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 18 août 2013 - 20 mars 2013 à 20:10
Vitaldix Messages postés 116 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 18 août 2013 - 20 mars 2013 à 20:10
A voir également:
- Tableau : caractère + int ?
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
ihssanos
Messages postés
29
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
6 décembre 2013
3
20 mars 2013 à 00:24
20 mars 2013 à 00:24
Pour la premiere question, je ne sais pas en quoi tu va utiliser un char+int mais dans tous les cas tu peux declarer un tableau de type String et cela va te permettre de combiner les lettres et les numeros (mais les numeros seront traité comme des caracter et pa comme un 'int')
une autro alternative tu peux declarer une variable de Type hashMap qui va te permettre d'avoir des variables de deux types differents. un exemple
Map<Integer, Character> var_map = new hashMap<Integer., Character>();
var_map.put(1,'a')
var_map.put(2,'b');...etc
hashMap cé comme un ArrayList mais ile te permet d'avoir deux types diffents pour chaque position
tu pexu trouver des manuel sur cette classe si ça t'interesse
une autro alternative tu peux declarer une variable de Type hashMap qui va te permettre d'avoir des variables de deux types differents. un exemple
Map<Integer, Character> var_map = new hashMap<Integer., Character>();
var_map.put(1,'a')
var_map.put(2,'b');...etc
hashMap cé comme un ArrayList mais ile te permet d'avoir deux types diffents pour chaque position
tu pexu trouver des manuel sur cette classe si ça t'interesse
ihssanos
Messages postés
29
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
6 décembre 2013
3
20 mars 2013 à 15:39
20 mars 2013 à 15:39
por la 2em question wi ça peut se faire,mais tu dois faire un casting, voila un exemple :
for (char c = 'a'; c <= 'z'; c = (char) (c+1))
System.out.print(c + " ");
}
for (char c = 'a'; c <= 'z'; c = (char) (c+1))
System.out.print(c + " ");
}
Vitaldix
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
6
Modifié par Vitaldix le 20/03/2013 à 18:42
Modifié par Vitaldix le 20/03/2013 à 18:42
Merci, c'est bien ça que je cherchais !
Cependant j'ai un léger problème, le c est considéré comme un entier je crois
J'avais le code suivant :
(tab est un tableau String)
J'ai essayé de convertir c en String avec
mais ça me met toujours "cannot convert from int to string" en soulignant le c
Si par hasard tu sais d'où ça viendrait, ça m'intéresse
Merci
Cependant j'ai un léger problème, le c est considéré comme un entier je crois
J'avais le code suivant :
for (int y=1;y<11;y++) for (int i=1;y<11;y++) for (char c = 'a'; c <= 'z'; c = (char) (c+1)) tabl[i][y]=c+y;
(tab est un tableau String)
J'ai essayé de convertir c en String avec
String.valueOf(c)
mais ça me met toujours "cannot convert from int to string" en soulignant le c
Si par hasard tu sais d'où ça viendrait, ça m'intéresse
Merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
20 mars 2013 à 19:07
20 mars 2013 à 19:07
Tu peux directement faire c++ sur un char, le cast explicite est superflu.
Ensuite, ta boucle sur les caractères ne sert à rien vu que tu affectes chaque nouvelle cominaison "c+y" à la même case tabl[i][y] de ton tableau, donc seule la dernière valeur sera conservée, tu auras donc toujours z....
Ensuite vu que tu as un String tu peux faire comme te l'a indiqué ihssanos : c + " " + y
Personnellement j'utiliserais plutôt String.format :
Enfin, attention, car tu commences tes tableaux à l'indice 1, alors qu'un tableau commence à 0, et tu as deux fois les conditions y<11; y++ sur tes deux boucles, ce qui ne va pas marcher....
Ensuite, ta boucle sur les caractères ne sert à rien vu que tu affectes chaque nouvelle cominaison "c+y" à la même case tabl[i][y] de ton tableau, donc seule la dernière valeur sera conservée, tu auras donc toujours z....
Ensuite vu que tu as un String tu peux faire comme te l'a indiqué ihssanos : c + " " + y
Personnellement j'utiliserais plutôt String.format :
Enfin, attention, car tu commences tes tableaux à l'indice 1, alors qu'un tableau commence à 0, et tu as deux fois les conditions y<11; y++ sur tes deux boucles, ce qui ne va pas marcher....
for (int y=0; y<10; y++) for (int i=0; i<10; i++) for (char c = 'a'; c <= 'z'; c++) tabl[i][y]=String.format("%c%d",c,y);
Vitaldix
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
6
20 mars 2013 à 19:20
20 mars 2013 à 19:20
Merci de ta réponse.
Les conditions y<11 et y++ sont juste une erreur de frappe quand j'ai recopié pour le forum, désolé.
Par contre le fait de commencer à l'indice 1 est volontaire, parce que la première ligne et la première colonne sont réservées à autre chose.
Bon sinon j'ai recopié ton code, avec quelques modif :
(les caractères sont en majuscule car j'en ai besoin aussi, mais c'est un détail)
Bon, tous mes caractères c'est J à chaque case, c'est ce que tu sembles explique au début de ton message mais je ne comprends pas pourquoi j'aurai toujours z !
En fait, le but du programme c'est d'avoir des A sur la première ligne, des B sur la deuxième, jusqu'à J.
Les conditions y<11 et y++ sont juste une erreur de frappe quand j'ai recopié pour le forum, désolé.
Par contre le fait de commencer à l'indice 1 est volontaire, parce que la première ligne et la première colonne sont réservées à autre chose.
Bon sinon j'ai recopié ton code, avec quelques modif :
for (int y=1; y<11; y++) for (int i=1; i<11; i++) for (char c = 'A'; c <= 'J'; c++) tabl[i][y]=String.format("%c%d",c,y);
(les caractères sont en majuscule car j'en ai besoin aussi, mais c'est un détail)
Bon, tous mes caractères c'est J à chaque case, c'est ce que tu sembles explique au début de ton message mais je ne comprends pas pourquoi j'aurai toujours z !
En fait, le but du programme c'est d'avoir des A sur la première ligne, des B sur la deuxième, jusqu'à J.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
20 mars 2013 à 19:46
20 mars 2013 à 19:46
Je disais z, parce que ta boucle allait jusqu'à 'z' avant que tu ne le modifies en 'J'
avec ta troisième boucle ce que tu fais c'est remplacer tabl[i][y] à chaque fois, donc au départ tu auras bien Ay, mais tout de suite après tu le remplaces par By, Cy, ..., et finalement Jy.
Ce n'est qu'après que tu changes de case...
"le but du programme c'est d'avoir des A sur la première ligne, des B sur la deuxième, jusqu'à J."
Donc il ne te faut pas 3 boucles, mais 2 seulement !
avec ta troisième boucle ce que tu fais c'est remplacer tabl[i][y] à chaque fois, donc au départ tu auras bien Ay, mais tout de suite après tu le remplaces par By, Cy, ..., et finalement Jy.
Ce n'est qu'après que tu changes de case...
"le but du programme c'est d'avoir des A sur la première ligne, des B sur la deuxième, jusqu'à J."
Donc il ne te faut pas 3 boucles, mais 2 seulement !
for (int x=1; x<11; x++) for (int y=1; y<11; y++) tabl[x][y] = String.format("%c%d", 'A'+x-1, y);
Vitaldix
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
6
20 mars 2013 à 19:53
20 mars 2013 à 19:53
Je ne comprends pas pourquoi je change de case seulement après avoir atteint J ! À chaque tour de boucle, les coordonnées concernées changent pourtant, non ? Après ça vient sûrement de
En tous cas merci, ça fonctionne parfaitement !
tabl[i][y]=String.format("%c%d",c,y);mais vu que je ne connaissais pas, c'est normal que je n'ai pas compris sur le coup !
En tous cas merci, ça fonctionne parfaitement !
20 mars 2013 à 13:49
Mais la deuxième question est toujours valable.