string tokenizer - Java - Programmation
Marsh Posté le 15-05-2003 à 05:54:46
ReplyMarsh Posté le 15-05-2003 à 05:55:52
De plus dans ton cas, y a vraiment, vraiment pas besoin d'un StringTokenizer. Un trim() suffit.
Marsh Posté le 15-05-2003 à 06:06:45
Cherrytree a écrit : Ton tableau tab, tu l'initialises comment ? |
private static int[] tab;
ensuite dans le constructeur...
tab = new int[11000];
et je ferais comment pour utilsier trim? de toute façon ça devrait pas régler mon problème...
Marsh Posté le 15-05-2003 à 06:18:23
okeefe a écrit : |
Un StringTokenizer c'est pour séparer une chaîne de caractères en tokens. Tu as choisi ' ' (espace) comme token, ce qui signifie que tu décomposes tes chaînes en mots, au sens commun du mot mot.
A partir de là, vu que ta chaîne est une ligne, donc un seul mot, ça n'a pas d'intérêt pour toi d'utiliser StringTokenizer. Tu fais juste :
Code :
|
Marsh Posté le 15-05-2003 à 06:37:45
merci ça fonctionne sans problème...
j'utilisait en fait un string tokeniser car j'ai une autre méthode semblable sauf qu'elle doit lire deux items par ligne...
le fichier à la structure:
Code :
|
mon code ressemble à l'ancien de l'autre:
Code :
|
je déclare les deux tableaux comme l'ancien...
j'obtient dans le même genre d'erreur que l'ancien
Code :
|
je comprend pas pourquoi ça fonctionne pas
Marsh Posté le 15-05-2003 à 08:16:41
bin tu as une erreur de design, tout simplement.
Tu testes si str n'est pas null, str n'est pas null ok tu rentres dans taboucle
et puis tu changes la valeur de str en faisant un readline !!! ca par contre ca peut renvoyer null et donc ton strinktokenizer se viande
est ce clair?
Marsh Posté le 15-05-2003 à 16:41:11
DarkLord a écrit : bin tu as une erreur de design, tout simplement. |
ça je l'avais compris, c'est plutôt la manière de corriger ça que sais pas comment je vais faire
Marsh Posté le 15-05-2003 à 16:44:38
tin t'abuse ... c'est pas compliqué là !
Code :
|
Marsh Posté le 15-05-2003 à 16:46:22
cela dit tu me fais peur avec ton tab là ... Tu connais le nombre de token à l'avance? Si non soit tu alloues un tableau trop grand, soi tu te mange des arrayindexoutofboundexception ...
Marsh Posté le 15-05-2003 à 23:41:40
puisque je sais pas combien de valeur que je lis, j'utilise un tableau dynamique
Code :
|
je lis ensuite avec cette méthode
Code :
|
j'obtiens l'erreur
java.lang.ArrayIndexOutOfBoundsException
en fait aussi que j'arrive à
tab[i] = Integer.parseInt(line.trim());
ça saute au catch
pourtant si je met le tableau statique au lieu de dynamique j'obtien pas d'erreur
Marsh Posté le 16-05-2003 à 01:30:53
okeefe a écrit : puisque je sais pas combien de valeur que je lis, j'utilise un tableau dynamique
|
excellente celle là !!!
bon, troll =>
Marsh Posté le 16-05-2003 à 06:58:11
okeefe a écrit : ben quoi on peut peu poser de question? |
C'est pas une raison pour bégayer et sortir des bétises. Les tableaux dynamiques c'est un peu plus compliqué que ça. ça se fait avec diverses classes comme ArrayList ou Vector. Ce que tu fais, c'est créer un tableau vide, sans allocation mémoire pour la moindre valeur. C'est normal que ton algo se plante. Il faudrait aussi comprendre ce qui a pu te faire penser que les tableaux dynamiques se créaient comme tu l'as fait.
Marsh Posté le 16-05-2003 à 08:08:57
Marsh Posté le 16-05-2003 à 20:32:03
Cherrytree a écrit : |
c'est pas des sotises, c'est des gens sur developpez.com qui m'ont dire de faire ça...
http://www.developpez.net/forums/viewtopic.php?t=81926
Marsh Posté le 16-05-2003 à 20:38:46
avant qu'un imbécile lache cette énormité, d'autres t'ont quand meme donné la réponse hein
Marsh Posté le 16-05-2003 à 20:58:36
the real moins moins a écrit : |
utiliser un vector, arraylist c'est quand même beaucoup moins performant qu'un tableau
Marsh Posté le 16-05-2003 à 20:59:19
okeefe a écrit : |
non.
edit: et puis si tu preferes un truc qui compile pas c'est ton problème
Marsh Posté le 16-05-2003 à 21:03:12
okeefe a écrit : |
Pas tellement. Si tu savais comment est codé une ArrayList, tu te rendrais compte de ton erreur. D'autant que tu peux initialiser une ArrayList en spécifiant sa taille de départ.
Marsh Posté le 16-05-2003 à 23:35:39
fykman a écrit : Essayes ca : |
on lui a deja fait faire tout ça. il sait pas initialiser un tableau
Marsh Posté le 16-05-2003 à 23:39:07
the real moins moins a écrit : |
Ouais j'ai vu apres, alors j'ai deleté....
Marsh Posté le 17-05-2003 à 14:04:05
okeefe a écrit : |
tu veux un tableau qui s'aggrandit tout seul ... ca s'appelle une ArrayList.
Marsh Posté le 17-05-2003 à 14:30:31
Cherrytree a écrit : |
Dans l'absolu, je doute quand même.
OK, si c'est pour des utilisations de base, on voit pas la différence. Mais passer par des objets comme ArrayList (ou sa version synchronisée Vector) peut s'avérer beaucoup moins performante dans des cas d'utilisations très intensives.
J'ai utilisé OptimizeIt y a un peu plus d'un an pour des tests de perfos et franchement, niveau mémoire et CPU (sur des progs vraiment orientés tests hein, pas des applis) les tableaux d'objets natifs l'emportent haut la main. OK, ArrayList et HashMap c'est hyper pratique à coder, surtout dans le cadre de tableaux à taille variable, mais dire que c'est aussi performant dans l'absolu, je suis pas d'accord
Marsh Posté le 17-05-2003 à 14:32:04
oui mais on s'en branle un peu des perfs
Marsh Posté le 17-05-2003 à 15:02:16
the real moins moins a écrit : oui mais on s'en branle un peu des perfs |
Ba moi j'répondais à la question sur les perfs
Sinon, évidemment que dans la vie de tous les jours j'utilise ArrayList et HashMap (enfin, Vector et Hashtable passk'on a pas droit à 1.2 ), faire des System.arraycopy(), ça va 30 secondes.
Marsh Posté le 17-05-2003 à 15:40:18
Taiche a écrit : mais dire que c'est aussi performant dans l'absolu, je suis pas d'accord |
c'est aussi performant que si il doit recoder lui même un tableau qui s'agrandit. Je crois que c'était ca qu'on voulait tous dire.
et comme le disait cherry, si il veut éviter le redimmensionnement, il a qu'à faire un new ArrayList(1000) et on en parle plus.
Marsh Posté le 17-05-2003 à 17:48:04
Benou a parfaitement vu ce que je voulais dire. Le seul problème que je vois avec une classe Collection, c'est qu'il faut utiliser des wrappers pour stocker les types primitifs. Mais pour le reste, c'est idéal.
Marsh Posté le 17-05-2003 à 18:12:36
ReplyMarsh Posté le 18-05-2003 à 00:49:06
the real moins moins a écrit : types primitifs sucks |
Codeurs primitifs sucks.
Marsh Posté le 18-05-2003 à 01:56:45
Cherrytree a écrit : Le seul problème que je vois avec une classe Collection, c'est qu'il faut utiliser des wrappers pour stocker les types primitifs. |
dans son cas, il peut stocket les chaines et ensuite faire un deuxième passage pour transformer la collection de chaine en tableau de int
Marsh Posté le 15-05-2003 à 04:09:52
j'ai un fichier rech1.txt qui a dedans
pour lire ce fichier je fais
avec ça j'obtiens
pourquoi ça ne fonctionne pas correctement
Message édité par okeefe le 15-05-2003 à 04:16:07