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 16703 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 1 juin 2023 - 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 16703 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 1 juin 2023 126
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 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
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