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
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 !
A voir également:

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
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
0
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 à 13:49
C'est bon, la première question est résolue grâce à toi, merci ! (pour la première question)

Mais la deuxième question est toujours valable.
0
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
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 + " ");
}
0
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
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 :
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
0
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
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....

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);
0
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
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 :
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.
0
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
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 !

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);
0
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
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
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 !
0