[java]2 problèmes dans mon programme

Résolu/Fermé
domxaline - Modifié par domxaline le 17/05/2015 à 11:43
 Utilisateur anonyme - 17 mai 2015 à 12:21
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

A voir également:

3 réponses

Utilisateur anonyme
17 mai 2015 à 11:49
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.
0
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?
0
Utilisateur anonyme
17 mai 2015 à 12:21
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.
0
ok j'ai compris il faut faire comme ceci

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

merci beaucoup
0