Problème d'execution d'un logiciel compilé. (Noob inside)

Problème d'execution d'un logiciel compilé. (Noob inside) - Java - Programmation

Marsh Posté le 30-10-2005 à 19:38:45    

Bonjour,
 
Je suis en train d'apprendre (seul) le java, et j'ai un petit problème.
 
J'ai pris et réecris un exemple de logiciel sur Internet (j'ai changé deux trois truc), et j'ai un problème de déclaration des variables.
 
Voici mon code:
 

Citation :


 
import java.io.*;
 
public class impots {
     
    public static void main(String arg[]){
 
 // données
 
 // limites des tranches d'impôts
 double Limites[]={12620, 13190, 15640, 24740, 31810, 39970, 48360, 55790, 92970, 127860, 151250, 172040, 195000, 0};
 // Coefficient appliqué
 double Coeffn[]={0,631,1290.5,2072.5,3309.5,4900,6898.5,9316.5,12106,16754.5,23147.5,30710,39312,49062};
 
 // Le programme
 
 // Création du flux d'entrée du Clavier
 BufferedReader Keyb=null;
 try{
     Keyb=new BufferedReader(new InputStreamReader(System.in));
 }
 catch(Exception e){
     erreur("Creation du flux d'entrée", e, 1);
 }
 
 // Récupération du statut Marital
 
 boolean OK=false;
 String answer=null;
 // Création du While, tant que OK n'est pas true, j'attend
 while(! OK){
     try{
  System.out.print("Etes vous marrié(e) (O/N) ?" );
  answer=Keyb.readLine();
  answer=answer.trim().toLowerCase();
  // Début du if (sur plusieur lignes)
  if (! answer.equals("o" ) && ! answer.equals("n" ))
      System.out.println("Réponse incorrecte. Recommancez" );
  else  
      OK=true;
  // Fin du if
     } catch(Exception e){
  erreur("Lecture état marital",e,2);
     }
 }
 boolean Marie = answer.equals("o" );
 // On a le statut Marital, dans le boolean Marie
 
 // Nombre d'enfant
 OK=false;
 int NbEnfant;
 // Création du While
 while(! OK){
     try{
  System.out.print("Nombre d'enfants : " );
  answer=Keyb.readLine();
  try{
      NbEnfant=Integer.parseInt(answer);
      // Le if à été contracté en une seule ligne.
      if(NbEnfant>=0) OK=true;
      else System.err.println("Réponse incorrecte. Recommencez" );
  } catch(Exception e){
      System.err.println("Réponse incorrecte. Recommencez" );
  } // Fin du 2e try
     } catch(Exception e){
  erreur("Lecture Salaire",e,4);
     } // Fin du 1er try
 } // Fin du While
 // Maintenant on a le nombre d'enfant, storé dans l'integrer int
 
 // Maintenant, on récupère le salaire.
 OK=false;
 long Salaire=0;
 while(! OK){
     try{
  System.out.print("Salaire annuel : " );
  answer=Keyb.readLine();
  try{
      Salaire=Long.parseLong(answer);
      if(Salaire>=0) OK=true; // Le if à encore été contracté
      else System.err.println("Réponse incorrecte. Recommencez" );
  } catch(Exception e){
      System.err.println("Réponse incorrecte. Recommencez" );
  } // Fin du try
   
     } catch(Exception e){
  erreur("Lecture salaire",e,4);
     } // Fin du try
 } // Fin du While
 // On a maintenant le salaire, on peut calculer l'impot.
 
 // Calcul du nombre de part
 double NbParts;
 if(Marie) NbParts=(double)NbEnfant/2+2;
   else NbParts=(double)NbEnfant/2+1;
 if (NbEnfant>=3) NbParts+=0.5;
 
 // Revenue imposable
 double Revenue;
 Revenue=0.72*Salaire;
 
 // Quotient familiale
 double QF;
 QF=Revenue/NbParts;
 
 // Recherche de la tranche d'impots correspondant à QF.
 int i;
 int NbTranches=Limites.length;
 Limites[NbTranches-1]=QF;
 i=0;
 while(QF>Limites[i]) i++;
 // L'impots
 long impots=(long)(i*0.05*Revenue-Coeffn[i]*NbParts);
 
 // On affiche le résultat
 System.out.println("Impot à payer : " );
 
    } // main
     
    // ---------- Erreur
    private static void erreur(String msg, Exception e, int exitcode){
 System.err.println(msg+"("+e+" )" );
 System.exit(exitcode);
    } // erreur
     
}
 
// Finis :)


 
Voilà, mon code.
 
Quand je compile ça, il me dit :
 

Citation :


 
init:
deps-jar:
Compiling 1 source file to /home/damien/Documents/Dam-pro/Learning/build/classes
/home/damien/Documents/Dam-pro/Learning/src/learning/impots.java:106: variable NbEnfant might not have been initialized
        if(Marie) NbParts=(double)NbEnfant/2+2;
/home/damien/Documents/Dam-pro/Learning/src/learning/impots.java:107: variable NbEnfant might not have been initialized
          else NbParts=(double)NbEnfant/2+1;
2 errors
BUILD FAILED (total time: 0 seconds)
 


 
Donc, je ne comprend pas car pourtant, NbEnfant à été déclaré (je l'ai mis en gras dans le code).
Les lignes qui provoque les erreurs sont en gras italique.
 
Je vous remercie.
 
Willits.


Message édité par Willits le 31-10-2005 à 09:03:16
Reply

Marsh Posté le 30-10-2005 à 19:38:45   

Reply

Marsh Posté le 30-10-2005 à 19:49:21    

En fait, l'erreur vient du fait que le compilateur pense que nbEnfant n'aura pas de valeur si, lors de son initialisation par une entrée clavier, le programme tombe dans l'exception.
Tu peux résoudre le problème en écrivant "int NbEnfant = 0;" au lieu de "int NbEnfant;". De cette manière, la valeur 0 sera écrasée ensuite par l'entrée clavier et le compilateur ne t'embêtera plus.


Message édité par rnoizet le 30-10-2005 à 19:50:51
Reply

Marsh Posté le 31-10-2005 à 08:54:43    

Je te remercie rnoizet, maintenant mon application se compile, mais j'ai un autre problème (et là je ne comprend vraiment rien).
 
Donc, j'ai mon fichier impots.class qui est compilé, et quand je le lance, il me dit ça :
 

Citation :


> java impots.class
Exception in thread "main" java.lang.NoClassDefFoundError: impots/class


 
Et là je ne sais vraiment pas quoi faire :(

Reply

Marsh Posté le 31-10-2005 à 09:32:31    

Tu as fait le Java Tutorial [:petrus dei]
 
Non parce que ça se lance pas comme ça un programme java [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-10-2005 à 11:34:44    

J'ai pris un cours en français sur internet, et il fait comme ça le gars.
 
javac impots.java
java impots.class
 
Et quand je fait Run dans NetBeans, il me sort la même erreur.

Reply

Marsh Posté le 31-10-2005 à 11:43:18    

Willits a écrit :

J'ai pris un cours en français sur internet, et il fait comme ça le gars.
 
javac impots.java
java impots.class


Ben il fait mal.
 
maintenant tu me fais le plaisir d'aller sur le topic Passage obligé pour débutants en Java, 2e post, tu vas faire le Java Tutorial en entier et tu lis Penser en Java [:klem3i1]
 
Après tu lis les 4 pages du topic en entier (quand t'auras fini ET le tuto ET TIJ), puis tu pourra revenir.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-10-2005 à 17:29:05    

C'est bon, j'ai compris, c'est mon classpath qui n'est pas bon.
Bon, je cherche où est ce java.io.

Reply

Marsh Posté le 01-11-2005 à 09:49:41    

Le nom d'une classe commence TOUJOURS par une majuscule.
On ne doit JAMAIS mettre le ".class" avec la commande "java".
Sérieux, arrête tt de suite et vas lire Penser en Java.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed