Afficher les contenus des méthodes
Résolu
sanyouch
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
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
A voir également:
- Afficher les contenus des méthodes
- Afficher appdata - Guide
- Afficher les commentaires word - Guide
- Afficher les modifications word - Guide
- Afficher taille dossier windows - Guide
- Windows 11 afficher d'autres options - Guide
1 réponse
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...
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...