Afficher les contenus des méthodes

Résolu/Fermé
sanyouch - 20 sept. 2013 à 21:33
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 20 sept. 2013 à 21:49
Bonsoir,

Je dois créer une méthode qui permet de lire deux fichier.java puis afficher les noms des méthodes et le contenu de chaque méthode, voila cette classe:



import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class RechercheMot {

String nomFichier;
public RechercheMot(String nomFichier) {

this.nomFichier=nomFichier;
}

static String methode1;
static String methode2;
public static void main(String args[])
{
int numLine=0;
int nbrOccur=0;
//ouvrir le fichier en leture
String fichier1 ="AlbumListScreen.java";
String fichier2="AlbumListScreen.java";
try
{
//fichier1
InputStream ips=new FileInputStream(fichier1);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader fich1=new BufferedReader(ipsr);
//fichier2
InputStream ips1=new FileInputStream(fichier2);
InputStreamReader ipsr1=new InputStreamReader(ips1);
BufferedReader fich2=new BufferedReader(ipsr1);
String line1;
String line2;
while ((line1=fich1.readLine()) != null && (line2=fich2.readLine()) != null){


StringTokenizer st1 = new StringTokenizer(line1);
StringTokenizer st2 = new StringTokenizer(line2);




while(st1.hasMoreTokens() && st2.hasMoreTokens()){

String m1 =st1.nextToken();
String m2 =st2.nextToken();

// tu peut ajouter les différent condition pour dégager tous les différentes possibilité
if ( (m1.equalsIgnoreCase("public")) &&((st1.nextToken().equalsIgnoreCase("void") ))&&
(m2.equalsIgnoreCase("public")) &&((st2.nextToken().equalsIgnoreCase("void") )) )
{
methode1 = st1.nextToken("()");
methode2 = st2.nextToken("()");

System.out.println(methode1);
System.out.println(methode2);
// permet d'afficher le contenu de méthode
if ( ((line1.contains(methode1)))|| line1.equalsIgnoreCase("}") && line1.contains("{") ||line2.contains("}") ||((line2.contains(methode2)))){

System.out.println("la premiére fichier "+line1);

System.out.println("la deuxiéme fichier" +line2);


}
}

}
}


fich1.close();
fich2.close();

}


catch(FileNotFoundException e)
{
e.printStackTrace();
}

catch(EOFException e)
{
System.out.println("fin du fichier");
}

catch(IOException e)
{
e.printStackTrace();
}


}

}

mais j'ai un problème, comment afficher le contenu de méthode. Dans cet code affiche seulement la premier ligne de la méthode
Merci d'avance

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
20 sept. 2013 à 21:49
Y a du ménage à faire là dedans...

StringTokenizer : cette classe est dépréciée, il ne faut plus l'utiliser (voir la doc)

InputStream, InputStreamReader, BufferedReader : ça s'emboîte bien, mais il y a tellement plus simple pour lire un fichier, Scanner par exemple.

equalsIgnoreCase("public") : pourquoi un equalsIgnoreCase alors que Java est sensible à la casse, ça veut dire que tu autorises aussi à avoir Public, PUBLIC, etc. alors que ça n'a aucun sens. C'est encore pire pour "void" car "Void" existe aussi !

Bref, essaie de faire du Java un peu propre, ça te permettra de repartir du bon pied, parce que là y a tout qui part de travers...
1