[java]2 problèmes dans mon programme [Résolu/Fermé]

Signaler
-
Messages postés
1640
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
-
Bonjour,
je viens de faire ce programme, il y a 2 problème me présentent.
1. quand je choisi sexe M, et donne age 40 ans par exemple,
mon prg me répond que "elle est imposable",
normalement il devait me répondre que "elle n'est pas imposable"!!!
2. ensuite, je sens que mon prg est un peu longue, quelqu'un a une solution
pour le simplifier svp.

import java.util.Scanner;
public class Testing1
{
public static void main(String[] args)
{
char reponse='O';
do
{
System.out.println("Entrez le sexe d'habitant M/F:");
Scanner valeur=new Scanner(System.in);
char sexe=valeur.nextLine().charAt(0);

System.out.println("Entrez l'age d'habitant:");
int age=valeur.nextInt();

boolean M=true;
boolean F=false;

if(M==true)
{
if(age>=20)
{
System.out.println("il est imposable");
}
else
{
System.out.println("il n'est pas imposable");
}
}
if(F==true)
{
if(age>=18 && age<=35)
{
System.out.println("elle est imposable");
}
else
{
System.out.println("elle n'est pas imposable");
}
}

System.out.println("");
System.out.println("Voulez vous reessaye, O/N?");
Scanner sc=new Scanner(System.in);
reponse=sc.nextLine().charAt(0);
}while(reponse=='O');
System.out.println("Fin du programme,Au revoir.");
}
}

merci d'avance

3 réponses

Messages postés
1640
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
491
Bonjour,

Il y a un gros oubli :-)

C'est normal, tu compares des valeurs que tu as toi même défini dans le programme et pas par rapport à ce qui a été entré. Tu dis par exemple M = true, et ensuite tu compares if(M==true).

Tu peux par exemple faire

boolean M;
if(sexe=='M') M = true;


ou raccourci
boolean M= (sexe == 'M');


Même chose pour le reste.
merci à votre aide
en écrivant comme ceci:

boolean M;
boolean F;
if(sexe=='M')
M=true;
F=false;

dans le résultat j'ai deux fois la réponse
Entrez le sexe d'habitant M/F:
M
Entrez l'age d'habitant:
18
il n'est pas imposable
elle n'est pas imposable

Voulez vous reessaye, O/N?
Messages postés
1640
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
491
Tu n'as pas besoin de deux variables puisqu'il n'y a que 2 sexes, si ce n'est pas M, c'est forcément F.

D'ailleurs tu n'es même pas obligé de passer par une variable booléenne mais tu peux réutiliser ta variable sexe (il faut aussi tester dans un vrai programme que l'utilisateur n'a pas entré autre chose que M ou F).

Pour valider la saisie tu peux faire aussi une boucle avec un do, comme tu l'as fait pour le nombre d'essais.

Et ensuite :
if(sexe=='M')
{
// Traitements pour un homme
}
else
{
// Traitements pour une femme
}


Et d'ailleurs il est également plus avantageux de créer des fonctions. Mais vu que tu sembles débuter en Java, progresse d'abord à ton rythme.
ok j'ai compris il faut faire comme ceci

boolean M;
boolean F;
if(sexe=='M')

merci beaucoup