Execution de programme

Fermé
ben ashra - 23 mars 2009 à 21:22
 Utilisateur anonyme - 26 mars 2009 à 04:39
Bonjour,
j'aimerais avoir de l'aide concernant l'exécution d'un programme java.
lorsque je lance la compilation de mon programme sous MyEclipse 6.0.1, ce que j'utilise:

import java.io.*;
import java.util.Scanner;

class compte_bancaire

{
//definition des attributs

private float solde;
private String numcompt;
private String nomclient;

//definition du constructeur

public compte_bancaire(String NC,String nomclt,float s)

{
solde=s;
numcompt=NC;
nomclient=nomclt;
}

//definition des methodes

public void verser(float mt)

{
solde=solde+mt;
}

public void retirer(float mt)

{
if(mt>solde)

{

System.out.print("solde insuffisant pour ce montant");

}

else

{
solde=solde-mt;
}
}

public float lire_solde()

{

return solde;
}

public void visualiser_solde()

{

System.out.print("votre solde est :"+solde);
}


}


class application

{

public compte_bancaire compte;
public static void main(String[]args)

{

String NC,nomclt;
float s;

System.out.print("donner le numero du compte");

try

{

Scanner sc=(new Scanner(System.in));
NC=sc.nextLine();

System.out.print("donner le nom du client");
nomclt=sc.nextLine();

System.out.print("donner le solde d'ouverture");
s=float.parse float(sc.Readline());

}

catch(IoExeption e)

{

System.out.print("Erreur d'entrée / sorie");
System.exit(1);

}

compte=new compte_bancaire(NC,nomclt,s);

//operation de versement doublant le solde

compte.verser(compte.lire_solde());
compte.visualiser_solde();

//operation de retrait du quart du solde

compte.retirer(1/4*compte.lire_solde());
compte.visualiser_solde();

}


}





les messages suivants apparaissent:


java.lang.NoClassDefFoundError: Compte_bancaire (wrong name: compte_bancaire)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main"

1 réponse

Aladin230 Messages postés 24 Date d'inscription lundi 23 mars 2009 Statut Membre Dernière intervention 29 juillet 2009 1
23 mars 2009 à 23:39
essaiez de modifier le nom de votre classe CompteBancaire par exp (n'oublier pas de le modifier dans le constructeur)
de plus vous avez une erreur dans lappel et l'écriture de la methode parseFloat
ecriture correcte: s=Float.parseFloat(sc.readLine() )
0
merci pour votre aide, j'ai essayé votre solution et apporté d'autres modifications,

import java.io.*;
import java.util.Scanner;

class exp

{
//definition des attributs

private float solde;
private char numcompt;
private char nomclient;

//definition du constructeur

public exp(char nc,char nomclt,float s)

{
solde=s;
numcompt=nc;
nomclient=nomclt;
}

public exp(String nc, Object nomclt, float s) {
// TODO Auto-generated constructor stub
}

//definition des methodes

public void verser(float mt)

{
solde=solde+mt;
}

public void retirer(float mt)

{
if(mt>solde)

{

System.out.print("solde insuffisant pour ce montant");

}

else

{
solde=solde-mt;
}
}

public float lire_solde()

{

return solde;
}

public void visualiser_solde()

{

System.out.print("votre solde est :"+solde);
}


}


class application

{

public static exp compte;
public void main(char[]args) throws IOException

{

String NC;
Object nomclt;
float s;

System.out.print("donner le numero du compte");

Scanner sc=(new Scanner(System.in));
NC=sc.nextLine();

System.out.print("donner le nom du client");
nomclt=sc.nextLine();

System.out.print("donner le solde d'ouverture");
s=Float.parseFloat(sc.nextLine());

compte=new exp(NC,nomclt,s);

//operation de versement doublant le solde

compte.verser(compte.lire_solde());
compte.visualiser_solde();

//operation de retrait du quart du solde

compte.retirer(1/4*compte.lire_solde());
compte.visualiser_solde();

}


}



mais je reçois toujours des messages d'erreur, pas comme la derniere fois. cette foi c'est:
java.lang.NoSuchMethodError: main
Exception in thread "main"
0
Utilisateur anonyme > ben ashra
26 mars 2009 à 04:39
Salut,

Bon c'est parceque ta class exp n'a pas de methode main.

Remarque :

-Il vaudrait mieux nommer la class exp >>>>> public class Exp (Exp pour respecter la convention des nom de class qui doit commencer par une majuscule) mais là n'est pas le problème, mais c'est une bonne habitude à prendre.

Même remarque pour les noms de variables ou de méthodes, mais c'est l'inverse, le nom doit commencer par une minuscule exemple String Nc pour le n° de compte devrait être String nc, ou nC ou numCompte

Une solution à essayer car il semble que c'est la classe Application qui doit faire appel à la classe Exp :

Couper la class application (à renommer également public class Application) et la coller comme nouveau fichier dans ton éditeur ceci avec les 2 imports:

import java.io.*;
import java.util.Scanner;

qui lui seront nécessaires, mais plus dans Exp.

Ne pas oublier dans Exp de changer également exp en Exp dans le constructeur ainsi que partout où il est fait appel à exp. De toutes manières la compile te dira si tu en as oublié.

Compiler les 2 classes Exp et Application puis executer Application (mais pas Exp).

Normalement il n'y aura plus d'erreur et tu pouras avancer dans la mise au point. (sí les modifications sont faites correctement, ou si je n'ai rien oublié)

N'hésites pas si tu rencontres des difficultés.

Cordialement,

Dan
0