Problème d'execution d'un logiciel compilé. (Noob inside) - Java - Programmation
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.
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 : |
Et là je ne sais vraiment pas quoi faire
Marsh Posté le 31-10-2005 à 09:32:31
Tu as fait le Java Tutorial
Non parce que ça se lance pas comme ça un programme java
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.
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. |
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
Après tu lis les 4 pages du topic en entier (quand t'auras fini ET le tuto ET TIJ), puis tu pourra revenir.
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.
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.
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:
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 :
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