Bonjour, j'ai un problème de conversion ou lecture de données. J'ai un Arraylist<Integer> qui contient des valeurs qui sont des indices(ou l'endroit précis d'une valeur contenu dans un simple tableau de CHAR)
Exemple : char tChar[] = new char[]{a,b,c,d,e,f}; cela correspond donc en indice a {0,1,2,3,4,5}
mon Arraylist contient les valeurs {1,4} après une série de trie mon but étant d'arriver a afficher les valeurs char de mon tableau tChar a partir de ces indices Le résultat attendu est : b,e
Mais je ne parviens pas a le caster et je viens vers vous pour m'aider a trouver la solution que cela fait un moment que je pédale dans la semoule et je suis en train de m'arracher le peu de cheveux qu'il me reste sur la tête.
Pour info, j'ai utilisé un Arraylist parce qu'il n'est pas définie en taille et que je peu avoir plusieurs valeur en fonction de ma recherche afin de le remplir
Si une personne peu m'aider SVP ou me mettre sur la voie merci d'avance
Je suis ici pour apprendre ! je cherche juste à être orienté pas que l'on me mâche le travail, mais je n'ai pas 10 ans expérience en dev, donc essayer d'être un minimum pédagogue merci
Pourquoi avoir besoin d'une collection alors que tu connais d'avance le nombre d'indice, le même que le nombre de char, tu parles de tri, ce qui implique que les éléments sont triés, et pas ignores.
Quelle est ta définition de 'cast' ?
La notation hongroise n'est pas recommandée en java, et sinon ce serait arr pour array et non t comme préfixe.
bonjour, dans ma collection dont les valeur sont 1,4 comme l'exemple susmentionné suite a un trie effectué en Hamon dont les indices de cette collection sont 0,1 sachant que c'est valeur peuvent être différente de 1,4 exemple 4,1,3 en fonction du trie effectué en Hamon et d'autre action préalablement effectué. le tri est bien effectué ceux qui me permet d'en ressortir les valeur contenu ma collection. jusque ici tous va bien, là ou cela coince c'est que ces fameuses valeur contenu dans cette collection qui corresponde au indice de mon tableau de char TChar dont je vais avoir besoin pour refaire une manip dessus mais sur la valeur réelle c'est a dire la valeur Char toujours par rapport a mon exemple qui correspond a (b,e)
-tableau de char tChar est un tableau a contenu fixe c'est toujours les même valeurs quoi qu'il arrive -j'ai un texte qui lui est aléatoire dont je trie et recherche certaine valeur contenu dans tChar et que je vais placer dans une collection puisque je ne connais pas la taille qu'il peu avoir en fonction du résultat du trie d'où l'utilisation de la collection -une foi que j'ai fait ce trie je vais devoir faire des changement sur c'est valeurs contenu dans cette collection seulement il faut que je sache a quoi correspond les indices contenu dans ma collection puisque ce sont juste des indices numérique alors que moi je veut faire la modification sur la valeur char -donc je suis oblige de lire la collection en castant ces valeur numérique pour savoir a quoi elle correspondent dans mon tableau de char tChar
je sais c'est tordu, mais j'ai pas le choix je suis parti en me repérant sur les indices du tChar parce que cela étais plus simple a réalisé pour moi mais là du coup je sèche
donc je cherche a lire ma collection ATri<Integer> par rapport a mon tableau tChar afin d'en afficher les valeur char voila donc pour moi c'est bien un cast qu'il faut effectué tous en effectuant une lecture des 2 tableau simultané (la collection ATri et le tChar)
un cast c'est changer un format de valeur int par exemple en valeur String
Je suis ici pour apprendre ! je cherche juste à être orienté pas que l'on me mâche le travail, mais je n'ai pas 10 ans expérience en dev, donc essayer d'être un minimum pédagogue merci
je sais c'est tordu, mais j'ai pas le choix je suis parti en me repérant sur les indices du tChar parce que cela étais plus simple a réalisé pour moi mais là du coup je sèche
Quant tu constates toi-même que
1. c'est tordu
2. tu pensais que c'est plus simple, mais en fait non
3. et que tu sèches
la conclusion logique serait que tu reprennes sur des bases plus saines. Quand c'est mal parti, faut pas s'obstiner, tu vas te fatiguer pour rien.
---
En fait, c'est juste que tu t'embrouilles la tête entre
les indices du tableau de caractères
ton ArrayList d'indices dans ce tableau
et probablement les indices de l'ArrayList
et probablement en y ajoutant malencontreusement une notion de "casting" parce que tu voudrait passer d'un entier (contenu dans l'ArrayList) à un caractère. Probablement dans le but de l'afficher parce que tu nous parles de String. A témoin :
> je cherche a lire ma collection ATri<Integer> par rapport a mon tableau tChar afin d'en afficher les valeur char
La range-based-for-loop montrée par @Brubru777 est un bon moyen de simplifier, en faisant abstraction au moins de la notion d'indice qui servirait à parcourir l'ArrayList. Parce que
for (int i = 0; i < ATri.size(); i++) { // ne faites pas ça
int index = Atri.get(i);
char c = tChar[index];
...
}
ça c'est la première idée qui vient quand on a un prof qui n'a jamais entendu parler de java8 (on en est à java17) et qui a passé son temps à vous bassiner avec la boucle for à la C (c'est le cas de le dire).
Bref, faut dissocier les problèmes, et utiliser les mécanismes adéquats fournis par le langage pour éviter de se perdre dans les détails.
- Edité par michelbillaud 27 janvier 2022 à 12:36:33
Comme dit précédemment, le cast est une conversion du type d'un seul objet en mémoire, ce que toi tu veux faire est une conversion de format de donnée, donc d'une nouvelle affectation de mémoire pour ce nouvel objet, ce n'est plus un cast.
ex de cast
int v = 65;
print((char)v); //affiche A
Pour le reste, je n'ai pas lu entièrement, les fautes et le manque de ponctuation rendent ton texte difficile a lire, ce serait bien de passer par un correcteur et de faire un effort sur la présence de majuscules, la ponctuation et la forme.
Enfin on utilise souvent le terme tri en informatique dans le sens de mettre les élément dans un ordre, pour séparer des éléments voulu de ceux a éliminer, on préfèrera filtrer.
Pour etre complet, outre ce premier cast qui sert à forcer des conversions entre types natifs (entiers, flitrants, caracteres...), il y a la conversion des références.
Par exemple
Objet o = ....
String s = (String) o;
if (s != null) {
// c'est une chaine
PS : On utilisait ça abondamment il y a longtemps, quand la généricité n'avait pas encore été introduite (Java 1.5, 2004).
Vector v = new Vector();
v.add("abcd"); // String
v.add(1); // Integer
et bien sûr on en retrouve des traces dans les tutoriels sur Internet, comme de toutes les vieilles cochonneries à ne plus utiliser.
- Edité par michelbillaud 27 janvier 2022 à 14:25:00
Merci a vous pour vos réponse le problème est résolu avec :
for (int index : ATri) {
char c = tChar[index];
System.out.println(tChar[index]);
}
ou ceci
for (int i = 0; i < ATri.size(); i++) {
int index = Atri.get(i);
char c = tChar[index];
System.out.println(tChar[index]);
}
sachant que j'utilise la première solution. Et désolé pour les fautes d'orthographe et ponctuation, je m'appliquerais au besoin si l'occasion ce représente
Je suis ici pour apprendre ! je cherche juste à être orienté pas que l'on me mâche le travail, mais je n'ai pas 10 ans expérience en dev, donc essayer d'être un minimum pédagogue merci
Java cast ou lecture ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl