[java] Problème de logique - flux
Fermé
jmlaguiness
Messages postés
6
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
5 mai 2010
-
Modifié par jmlaguiness le 4/05/2010 à 03:32
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 5 mai 2010 à 11:51
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 5 mai 2010 à 11:51
A voir également:
- [java] Problème de logique - flux
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Java runtime - Télécharger - Langages
4 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
4 mai 2010 à 10:56
4 mai 2010 à 10:56
Bonjour,
Pouah, que c'est moche comme code ! Tu es certains de faire du Java et non du C ou quelque chose d'aussi linéaire qui s'en rapproche ?
Je critique je critique, je sais bien que ça ne fait pas avancer ton schmilblick.
Pour comprendre un peu mieux ton code, il nous faudrait l'intégralité, par exemple, qu'est ce que c'est que "tagd", il n'est pas défini dans le bout que tu as publié.
Dans tous les cas, je pense que la méthode de lecture / interprétation n'est pas bonne (foireuse si tu préfère), ou tout simplement brouillon. Il te faudrait la refaire de manière plus "propre".
Est-ce que tu as des impératifs sur la façon de lire le fichier (je vois que tu lis caractère par caractère alors que dans ton cas il serait certainement plus facile de lire bloc par bloc puis rechercher ce que tu souhaites à l'intérieur de ces blocs)
Réponds à ces quelques questions et je t'aiderai à mettre en place quelque chose de plus clean et qui fonctionne.
Pouah, que c'est moche comme code ! Tu es certains de faire du Java et non du C ou quelque chose d'aussi linéaire qui s'en rapproche ?
Je critique je critique, je sais bien que ça ne fait pas avancer ton schmilblick.
Pour comprendre un peu mieux ton code, il nous faudrait l'intégralité, par exemple, qu'est ce que c'est que "tagd", il n'est pas défini dans le bout que tu as publié.
Dans tous les cas, je pense que la méthode de lecture / interprétation n'est pas bonne (foireuse si tu préfère), ou tout simplement brouillon. Il te faudrait la refaire de manière plus "propre".
Est-ce que tu as des impératifs sur la façon de lire le fichier (je vois que tu lis caractère par caractère alors que dans ton cas il serait certainement plus facile de lire bloc par bloc puis rechercher ce que tu souhaites à l'intérieur de ces blocs)
Réponds à ces quelques questions et je t'aiderai à mettre en place quelque chose de plus clean et qui fonctionne.
jmlaguiness
Messages postés
6
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
5 mai 2010
1
5 mai 2010 à 11:05
5 mai 2010 à 11:05
Hello kij_82.
Désolé pour le code... C'est clair, je ne suis pas un artiste, l'essentiel est que ça tourne, pas que ce soit beau ;).
Pour répondre à tes questions, je cherche justement à créer une classe qui peut le faire pour n'importe quels tags. En l'occurence, tagd et tagf sont définis un peu plus tot, en allant les rechercher dans un fichier texte...
Je joins le code auquel je suis arrivé. (et j'espère que tu le trouveras "plus propre..." :s).
La classe PushbackInputStream semble être celle qui convient, mais j'arrive pas à bien la déclarer :s.
J'ai mis le code ici : http://pastebin.com/tRusK2xV (pas la place dans un post :s).
Merci d'avance.
Désolé pour le code... C'est clair, je ne suis pas un artiste, l'essentiel est que ça tourne, pas que ce soit beau ;).
Pour répondre à tes questions, je cherche justement à créer une classe qui peut le faire pour n'importe quels tags. En l'occurence, tagd et tagf sont définis un peu plus tot, en allant les rechercher dans un fichier texte...
Je joins le code auquel je suis arrivé. (et j'espère que tu le trouveras "plus propre..." :s).
La classe PushbackInputStream semble être celle qui convient, mais j'arrive pas à bien la déclarer :s.
J'ai mis le code ici : http://pastebin.com/tRusK2xV (pas la place dans un post :s).
Merci d'avance.
Je pense que ce que veut dire kij, c'est que tu as d'autres façons de faire beaucoup plus simple grâce à l'API java.
Par exemple voici ce que tu peux faire avec des Patterns regex :
Pattern node_pattern = Pattern.compile("tagd(.*?)tagf");
Matcher node_m = node_pattern.matcher(" ceci est un test tagd on doit trouver cette phrase en résultat tagf mais pas ce bout là");
while( node_m.find() ) {
String node_s = node_m.group();
System.err.println(node_s);
}
Ce qui est plus "light" et doit répondre à ce que j'ai compris de ton problème.
Par exemple voici ce que tu peux faire avec des Patterns regex :
Pattern node_pattern = Pattern.compile("tagd(.*?)tagf");
Matcher node_m = node_pattern.matcher(" ceci est un test tagd on doit trouver cette phrase en résultat tagf mais pas ce bout là");
while( node_m.find() ) {
String node_s = node_m.group();
System.err.println(node_s);
}
Ce qui est plus "light" et doit répondre à ce que j'ai compris de ton problème.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
5 mai 2010 à 11:51
5 mai 2010 à 11:51
Re,
Comme le dis plus clairement Seb, effectivement tu as bcp d'API java qui permettent de faire les choses plus simplement. Tu devrais avoir le choix.
Dans le code que tu as donné, il y a d'ailleurs des fonctions qui ne sont pas utilisées correctement, ou peut-être n'a-t-on pas la même version du JDK. Cela ce n'est pas plus important que ça si ça fonctionne dans ton environnement.
Le principe est de faire un algo clair et le plus rapide possible (ou du moins un mixte entre clarté / maintenabilité du code et rapidité de l'algorithme)
Mais surtout, surtout ! :) Il faut programme en Objet (Java étant un langage orienté Objet, autant en profiter. C'est à dire ne pas mettre tout ton code de manière linéaire dans une seule méthode.
Je tâcherai de faire un exemple cet après midi si j'ai le temps pour te montrer plus clairement.
Comme le dis plus clairement Seb, effectivement tu as bcp d'API java qui permettent de faire les choses plus simplement. Tu devrais avoir le choix.
Dans le code que tu as donné, il y a d'ailleurs des fonctions qui ne sont pas utilisées correctement, ou peut-être n'a-t-on pas la même version du JDK. Cela ce n'est pas plus important que ça si ça fonctionne dans ton environnement.
Le principe est de faire un algo clair et le plus rapide possible (ou du moins un mixte entre clarté / maintenabilité du code et rapidité de l'algorithme)
Mais surtout, surtout ! :) Il faut programme en Objet (Java étant un langage orienté Objet, autant en profiter. C'est à dire ne pas mettre tout ton code de manière linéaire dans une seule méthode.
Je tâcherai de faire un exemple cet après midi si j'ai le temps pour te montrer plus clairement.