Re-question, mais urgent !

oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004 - 22 août 2003 à 11:46
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 - 23 août 2003 à 15:14
Ce programme passe à la compile, je run l'application et voila ce qu'il me vient à l'ecran:

java.lang.NoSuchMethodError: main
Exception in thread "main" Exit code: 1
There were errors

Ce programme import

java.math
et
java.io

Que dois-je faire??? je désespère... mercide me répondre

18 réponses

benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 11:50
pourrais tu poster tout le code stp car je pense que tu l a pas mal modifier depuis la derniere fois

benohite
:big)
0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
22 août 2003 à 12:53
Le voila, y a juste ca, tu remarqueras que je suis passé
au stade supérieur (méthodes), mais y a encore passablement de boulot ;-).

Encore merci pour ton aide précieuse.

// * Nom: Cerlce_3
// * But: Permet de calculer l'air d'un cercle, mais avec des méthodes (procédures et fonctions)

import java.math.*;     // Importation de la classe mathématique de java
import java.io.*;

class Cercle_3
{

   // * Methode: Présentation
   // * But: Décrit les fonctionnalités du programme
   public static void Present()
   {
      System.out.println();
      System.out.println("Ce programme permet de calculer");
      System.out.println("l'air d'un cercle via un rayon");
      System.out.println("introduit par l'utilisateur");
      System.out.println("-------------------------------");
      System.out.println();
   }
     
   // * Methode: ConvStrDoub
   // * But: Lit une entrée clavier et la converti en double
   public static Double ConStrDoub()
   {
      byte[] recup = new byte[100];
      try
      {
          // * Lit l'entree comme un flot d'octet
          System.in.read(recup);
      }
      catch(IOException except){} 
        
      // * Converti ces octets en chaine
      String chaine = new String(recup); 
      // * Converti la chaine en double
      Double resultat = new Double(chaine);      
      return resultat;
   }

   public static void main(Double resultat)
   {
      // * Déclaration des variables et constante
      double Rayon;           
      double Air;
      double Pi = Math.PI;       
            
      // * Appel a la methode de presentation      
      Present();
      System.out.println("Entrez le rayon du cercle: ");
      
      // * Appel a la methode de conversion
      ConStrDoub();
      
      // * Calculs
      Rayon = resultat.doubleValue();
      Air = (Rayon*Rayon)*Pi;
      
      // * Affichage du resultat
      System.out.println();
      System.out.println();
      System.out.println("L'air du cercle vaut: "+ Air);
      System.out.println();
   }
}

0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
22 août 2003 à 13:00
Tu remarqueras l'erreur que j'ai faite, mais qui passe a la compile !?!? Je n'ai pas donné le même nom à la méthode ConvStrDoub lorsque je l'appel (ConStrDoub)... pas tout compris sur ce coup !
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 13:02
le code est juste, essaye de lancer ton appli par :
java ./Cercle_3

benohite
:big)
0

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

Posez votre question
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 13:04
c juste et c vrai que c bizarre que tu n es pas eu d erreur de compilation a moins qu il existe dans les package que tu utilise une fonction ConStrDoub

benohite
:big)
0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
22 août 2003 à 13:14
Rien ne se passe... snif, j'ai corrigé l'erreur, la compile est OK mais toujours pas le lancement de cette application...
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 13:16
alors la a part une mauvaise config de la jvm je vois pas

benohite
:big)
0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
22 août 2003 à 13:40
Qu'est-ce qu'il y a d'important dans la JVM ???
je ne sais plus comment la configurer ???
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 13:52
elle utilise des variables d environnements , la plus connue est classpath ou tu dois specifier le chemin des classes c est a dire en 1er lieu le repertoire d installation du jdk mais tu dois aussi y mettre lorsque tu utilises des packages perso le chemin des repertoires ou se trouve les classes de ton package
ex: tes classes sont dans le dossier c:\toto\ et appartiennent au package toto alors tu specifie dans la classpath c:\ ainsi en faisant import toto.*;
elle ira chercher dans c:\toto et si ta variable classpath contient aussi c:\mesClasses alors elle essayera de chercher dans c:\mesClasses\toto

tu utilises un envireonnement de developpement ou une editeur de texte ?

benohite
:big)
0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
22 août 2003 à 13:58
Un IDE, RealJ et Jcreator (pas le choix)...
Mais même quand je compile et lance l'application
depuis le DOS via les fichiers BATCH, ca me donne
la même erreur....
0
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
22 août 2003 à 13:58
kaloway

je ne sais pas pourquoi à la compilation il ne détecte pas l'erreur mais il faut écrire

public static void main(String [] arg)

au lieu de

public static void main(Double resultat)
0
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
22 août 2003 à 14:04
kaloway

kaloway
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 14:24
Je viens de trouver une autre erreur qui est apssée inapercue:

dans ta methode ConStrDoub(), tu declare un objet Double resultat donc une variable connue uniquement dans ta methode
et ensuite dans le main tu appelle cette methode et tu fais rayon = resultat.doubleValue();
chose impossible car tu es dans la methode main et resultat n y est pas reference si ce n est en argument du main mais comme la dis kaloway il te faut mettre String arg[] et non Double resultat
donc remplace plutot ces deux lignes par :
Rayon = ConvStrDoub().doubleValue();


benohite
:big)
0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
22 août 2003 à 14:55
Oui c'est juste... mais la variable (ou primitive?!?) doit
entrer dans la méthode main ?!? ou alors je dois
la déclarer en variable globale?
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 14:59
oui si tu la declares comme variable de classe a lors la c ok tu peux l utiliser dans les deux methodes

benohite
:big)
0
cs_desperad0 Messages postés 8 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 25 août 2003
22 août 2003 à 15:04
bon moi jt'ai carrement corrigé ton code (avec jcreator), qui maintenant marche nickel:

mport java.math.*; // Importation de la classe mathématique de java
import java.io.*;
 
class Cercle_3
 {
 
 // * Methode: Présentation
 // * But: Décrit les fonctionnalités du programme
 public static void Present()
 {
 System.out.println();
 System.out.println("Ce programme permet de calculer");
 System.out.println("l'air d'un cercle via un rayon");
 System.out.println("introduit par l'utilisateur");
 System.out.println("-------------------------------");
 System.out.println();
 }
 
 // * Methode: ConvStrDoub
 // * But: Lit une entrée clavier et la converti en double
 public static Double ConStrDoub()
 {
 byte[] recup = new byte[100];
 try
 {
 // * Lit l'entree comme un flot d'octet
 System.in.read(recup);
 }
 catch(IOException except){} 
 
 // * Converti ces octets en chaine
 String chaine = new String(recup); 
 // * Converti la chaine en double
 Double resultat = new Double(chaine); 
 return resultat;
 }
 
 public static void main(String args[])
 {
 // * Déclaration des variables et constante
 double Rayon; 
 double Air;
 double Pi = Math.PI; 
 
 // * Appel a la methode de presentation 
 Present();
 System.out.println("Entrez le rayon du cercle: ");
 
 // * Appel a la methode de conversion
 ;
 
 // * Calculs
 Rayon = ConStrDoub().intValue();
 Air = (Rayon*Rayon)*Pi;
 
 // * Affichage du resultat
 System.out.println();
 System.out.println();
 System.out.println("L'air du cercle vaut: "+ Air);
 System.out.println();
 }
 }
0
oullafff Messages postés 29 Date d'inscription mardi 19 août 2003 Statut Membre Dernière intervention 20 avril 2004
23 août 2003 à 09:39
Merci grand gourou...
Pour mon épanouissement personnel...

Comme j'ai pu le voir, il est permis de faire appel
à une méthode lors d'une affectation d'une primitive,
c'est bien cela?

De plus, c'est quoi que ce intValue() ???

Merci de m'accorder de ton temps, c'est vraiement sympa
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
23 août 2003 à 15:14
la methode intValue() renvoi la valeur entiere (de type int) d'un objet Double
voila tu sais tout ;-)

benohite
:big)
0