Tableau : caractère + int ?
Résolu
Vitaldix
Messages postés
116
Date d'inscription
Statut
Membre
Dernière intervention
-
Vitaldix Messages postés 116 Date d'inscription Statut Membre Dernière intervention -
Vitaldix Messages postés 116 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
alors voilà, je voulais savoir s'il était possible de créer un même tableau qui contient des int ET des char, parfois les deux au même endroit (par exemple a10)
J'ai voulu créer un tableau de cette sorte :
char tableauCaractere[][] = new char[11][11];
Ben ça marchais pas pour mettre des valeurs dedans, j'avais par exemple fait :
tableau[0][i]=i; mais il ne veut pas me convertir mon i (qui est un int que je vais varier dans ma boucle for) en char. Or je ne peux pas convertir i en caractère vu que je fais varier mon i (i++) !
Donc voilà, je recherche la solution à ce problème, merci d'avance !
Par ailleurs, j'ai une autre petite question indépendante de ce que j'ai demandé précédemment : est-il possible de faire varier un caractère comme un int ?
Par exemple un
int i=0; i<5;i++
ben ça ferait 0 1 2 3 4, mais un truc équivalent pour les lettres genre
char x=a; x<d; x++
et ça ferait a b c
C'est un peu farfelu mais ça me serait utile plutôt que rentrer tout l'alphabet (niveau esthétisme)
Merci !
alors voilà, je voulais savoir s'il était possible de créer un même tableau qui contient des int ET des char, parfois les deux au même endroit (par exemple a10)
J'ai voulu créer un tableau de cette sorte :
char tableauCaractere[][] = new char[11][11];
Ben ça marchais pas pour mettre des valeurs dedans, j'avais par exemple fait :
tableau[0][i]=i; mais il ne veut pas me convertir mon i (qui est un int que je vais varier dans ma boucle for) en char. Or je ne peux pas convertir i en caractère vu que je fais varier mon i (i++) !
Donc voilà, je recherche la solution à ce problème, merci d'avance !
Par ailleurs, j'ai une autre petite question indépendante de ce que j'ai demandé précédemment : est-il possible de faire varier un caractère comme un int ?
Par exemple un
int i=0; i<5;i++
ben ça ferait 0 1 2 3 4, mais un truc équivalent pour les lettres genre
char x=a; x<d; x++
et ça ferait a b c
C'est un peu farfelu mais ça me serait utile plutôt que rentrer tout l'alphabet (niveau esthétisme)
Merci !
A voir également:
- Tableau : caractère + int ?
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
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
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 + " ");
}
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
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);
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.
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);
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 !
Mais la deuxième question est toujours valable.