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
|