Fonction renvoie erreur?

cs_calypso78
Messages postés
36
Date d'inscription
mercredi 15 octobre 2008
Statut
Membre
Dernière intervention
27 octobre 2012
- 9 mai 2011 à 11:53
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
- 11 mai 2011 à 10:45
Bonjour,

J'ai un petit problème avec des fonctions, j'ai mon code :

public class Fics_console {
ArrayList <String> code_source = new ArrayList <String> ();
    /**
     * @param args the command line arguments
     */
    public void main(String[] args) throws MalformedURLException, IOException {
        
        
        String profil = "http://www.fanfiction.net/s/6479312/1/Passions_Immortelles_Partie_II";
        code_source = recuperer_source(profil);
        
    }
    
    public ArrayList recuperer_source(String profil) throws MalformedURLException, IOException {
        
        URL yahoo = new URL("http://www.yahoo.com/");
BufferedReader in = new BufferedReader(new InputStreamReader(yahoo.openStream()));
String inputLine;

while ((inputLine = in.readLine()) != null) {
            
            code_source.add(inputLine);
            
        }

in.close();
        
        return code_source;
        
    }
}


Netbeans ne me laisse pas lancer le programme, il me met l'erreur : "Class Fics_Console.Fics_Console" does not have a main method"

Je ne vois pas où définir la méthode principale.
Avant de mettre tout mon code, j'ai fait une fonction plus simple que ça, et elle fonctionnait.

J'espère que vous pourrez m'aider,
Merci et bonne journée,

Calypso

9 réponses

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
9 mai 2011 à 13:53
il faut que ta méthode mais soit statique, remplace la déclaration par

public static
 void main(String[] args) throws MalformedURLException, IOException {

0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
9 mai 2011 à 13:54
Oubli les balises size, je pense que tu avais compris, il faut donc que tu mettes :

public static void main(String[] args) throws MalformedURLException, IOException {
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
9 mai 2011 à 13:57
Tu devrais remplacer la signature de ta méthode recuperer_source (ArrayList) par ArrayList<String> ou mieux par List<String> et déclarer ton attribut en private
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
9 mai 2011 à 14:04
A ta place, je ferais ca :
public class Fics_console {
   
private List<String> code_source = new ArrayList<String> ();
    
    public static void main(String[] args) {
        try{
//Je ne sais pas à quoi te sert profil ???
String profil = "http://www.fanfiction.net/s/6479312/1/Passions_Immortelles_Partie_II";
Fics_console fc = new Fics_console();
code_source = fc.recuperer_source(profil);
}
catch(MalformedURLException e1){
e1.printStackTrace();
}
catch(MalformedURLException e2){
e2.printStackTrace();
}
        
    }
    
    public List<String> recuperer_source(String profil) throws MalformedURLException, IOException {
//Peut etre devrait tu remplacer l'adresse de yahoo par profil ??
        URL yahoo = new URL("http://www.yahoo.com/");
BufferedReader in = new BufferedReader(new InputStreamReader(yahoo.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
code_source.add(inputLine);
}
in.close();
        return code_source;
    }
}


Et en tout cas, regarde à quoi te sert profil parce que pour l'instant, il ne sert à rien.

Bon courage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_calypso78
Messages postés
36
Date d'inscription
mercredi 15 octobre 2008
Statut
Membre
Dernière intervention
27 octobre 2012

9 mai 2011 à 16:37
En effet, dans le code que j'ai mis il ne sert à rien, la fonction recuperer_source prend l'url contenue dans profil, et récupère son code_source par la méthode URL, puis renvoie ce code source à la fonction main, donc remplacer yahoo.com par profi.
0
cs_calypso78
Messages postés
36
Date d'inscription
mercredi 15 octobre 2008
Statut
Membre
Dernière intervention
27 octobre 2012

10 mai 2011 à 20:36
Bonsoir,

J'ai refait des tests, et je ne comprends toujours pas pourquoi ça ne fonctionne pas...
Voici un nouveau code :

public class JavaApplication20 {

    /**
     * @param args the command line arguments
     */
    ArrayList <String> liste = new ArrayList <String> ();
    
    public static void main(String[] args) {
        
        int resultat;
        int premier;
        int deuxieme;
        premier = 1;
        deuxieme = 2;
        resultat = add(premier, deuxieme);
        
        System.out.println(resultat);
        String profil = "adresse";
        liste = remplir(profil);
        int statut = ecrire(profil);
        if (statut == 1) {
            
            System.out.println("C'est bon");
            
        }
        
        
    }
    
    public static int add(int un, int deux) {
        
        int somme = un + deux;
        return somme;
        
    }
    
    public ArrayList remplir(String profil) {
        
        liste.add("un");
        liste.add("deux");
        return liste;
        
    }
    
    public static int ecrire(String profil) {

        try {
            FileWriter fecrire = new FileWriter("C:\\daigl\\fonction.txt");
            BufferedWriter ecrire = new BufferedWriter(fecrire);
            if (ecrire != null) {

                ecrire.write(profil);
                

            }
            ecrire.close();
            
            
        } catch (IOException ex) {

        }
        
        return(1);

    }
}


Toutes mes fonctions fonctionnent, sauf la deuxième, qui doit remplir l'arraylist et la retourner au programme principal, qui me dit que ma fonction ne peut être appelée à partir d'une fonction static. Pourtant, quand j'enlève le static devant le main, il me dit que n'ai pas de classe principale, et donc que je ne peux pas lancer le programme.

C'est frustrant, j'espère que vous pourrez m'aider.
Merci,
calypso
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
10 mai 2011 à 20:59
C'est normal, si ta fonction n'est pas statique, tu dois l'appeler à partir d'une instance de ta classe, je te l'avais fait sur le programme que je t'ai donné, je te réécris ca :

public class JavaApplication20 {

    private List<String> liste = new ArrayList<String> ();
    
    public List<String> getListe(){
        return liste;
    }

    public void setListe(List<String> liste){
        this.liste=liste;
    }

    public static void main(String[] args) {        
        int resultat;
        int premier;
        int deuxieme;
        premier = 1;
        deuxieme = 2;
        resultat = add(premier, deuxieme);
        System.out.println(resultat);
        String profil = "adresse";
        
        //Instanciation de la classe JavaApplication20
        JavaApplication20 app = new JavaApplication20();
        //Modification de la liste
        app.setListe(remplir(profil));
        
        int statut = ecrire(profil);
        if (statut == 1) {
            System.out.println("C'est bon");
        }
    }
    
    public static int add(int un, int deux) {   
        int somme = un + deux;
        return somme;
    }
    
    public List<String> remplir(String profil) {
        liste.add("un");
        liste.add("deux");
        return liste;
    }
    
    public static int ecrire(String profil) {
        try {
            FileWriter fecrire = new FileWriter("C:\\daigl\\fonction.txt");
            BufferedWriter ecrire = new BufferedWriter(fecrire);
            if (ecrire != null) {
                ecrire.write(profil);

            }
            ecrire.close();
            
        } 
catch (IOException ex) {
ex.printStackTrace();
        }
        
        return(1);
    }
}

0
cs_calypso78
Messages postés
36
Date d'inscription
mercredi 15 octobre 2008
Statut
Membre
Dernière intervention
27 octobre 2012

10 mai 2011 à 21:36
Ah ouais, tu m'étonnes que j'y avais rien compris :) Je connais pas vraiment toutes ces choses encore.
Bon, je retiens et j'applique alors ^^, merci et bonne soirée à toi.
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
11 mai 2011 à 10:45
En faut, toutes les méthodes qui ne sont pas statiques sont attachées à une instance de la classe. Pour créer une instance, il faut le faire une utilisant un new.

C'est tout simple, il suffit de le savoir.

Bonne continuation
0