Condition if

nitarak
Messages postés
17
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
19 juin 2021
- Modifié le 30 janv. 2021 à 20:19
KX
Messages postés
16566
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
3 juillet 2022
- 30 janv. 2021 à 22:23
Bonjour les amis....Je ne sais pas ce qui ne fonctionne pas sur mon code...à propos du condition if
Il me donne toujour la valeur 2000 or normalement ca ne doit pas être cela
public double[] getIRSA(Connection n)
 {
  
  double[] salaire=getValueOfIrsa(n);
  for(int i=0;i<salaire.length;i++)
  {
   System.out.println(salaire[i]);
  }
  
  double[] irsa=new double[salaire.length];
  for(int i=0;i<salaire.length;i++)
  {
    if(salaire[i]<=350000)
    {
     irsa[i]=2000;
    }

    if(350001<=salaire[i] && salaire[i]<=400000)
    {
     irsa[i]=(salaire[i]*5)/100;
    }

    if(400001<=salaire[i] && salaire[i]<=500000)
    {
     irsa[i]=(salaire[i]*10)/100;
    }

    if(500001<=salaire[i] && salaire[i]<=600000)
    {
     irsa[i]=(salaire[i]*15)/100;
    }

    if(salaire[i]>=600000)
    {
     irsa[i]=(salaire[i]*20)/100;
    }
   System.out.println(irsa[i]);
  }

  return irsa;
 }

Merci d'avance de votre aide. C'est le irsa qui me donne toujour 2000....alors que ce n'est pas normal

2 réponses

KX
Messages postés
16566
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
3 juillet 2022
124
30 janv. 2021 à 22:23
Bonjour,

Une remarque sur ton code : un double n'est pas un nombre entier.
Donc si tu fais
if(salaire[i]<=350000)
et
if(350001<=salaire[i])
, il te manque le cas où le salaire est entre 350000.01 et 350000.99

Voici une alternative à ton code qui permet de résoudre ce problème :
public double computeIrsa(double salaire) {
    if (salaire <= 350_000)
        return 2000;
    if (salaire <= 400_000)
        return salaire*5/100;
    if (salaire <= 500_000)
        return salaire*10/100;
    if (salaire <= 600_000)
        return salaire*15/100;
    return salaire*20/100;
}

for (int i = 0; i < salaire.length; i++)
    irsa[i] = computeIrsa(salaire[i]);
1
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
30 janv. 2021 à 20:08
Bonjour

Tout d’abord, tu as essayé d’utiliser les balises de code mais pas tout à fait comme il faut, voir ici pour te prochain messages https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Pour ton problème, as tu exécuté le code en pas à pas et espionné le contenu des variables?
0
nitarak
Messages postés
17
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
19 juin 2021

Modifié le 30 janv. 2021 à 20:26
Bonjour...merci beaucoup pour le lien je suis nouvelle sur ce alors je ne sais pas encore trop comment le faire.
Et pour le problème....c'est maintenant que je me rends compte et que je vois que c'est la valeur du salaire même qui est faux. tout est inferieur à 350 000.
Mais j'ai une autre problème mais c'est un peu difficile pour moi de le décrire ici
0