Probléme Java [Résolu/Fermé]

Signaler
Messages postés
8
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
23 décembre 2018
-
Messages postés
8
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
23 décembre 2018
-
Bonjour les amis, je suis un éxtréme débutant c'est quoi le probléme avec ce code :
package boucles;
import java.util.Scanner;
public class Tablede5 {

 public static void main(String[] args) {
  Scanner keyboard = new Scanner(System.in);
  int salary=0;
  double tax=0;
  double salaryaftertax = salary-(salary*tax);
  System.out.println("enter your salary");
  salary = keyboard.nextInt();
  System.out.println("enter the tax rate");
  tax = keyboard.nextDouble();
  System.out.println("your salary after tax is"+salaryaftertax); 
}
}

output :
enter your salary
10000
enter the tax rate
0.1
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at boucles.Tablede5.main(Tablede5.java:13)

1 réponse

Messages postés
16365
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 juin 2021
2 845
Bonjour,

Si tu as un ordinateur en français, les nombres doivent être saisis avec une virgule pas avec un point.
enter the tax rate
0,1
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
8
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
23 décembre 2018

Merci pour ta réponse, cependant j'avais déja éssayé avec la virgule et j'ai réessayé et voila le nouveau résultat:

enter your salary
10000
enter the tax rate
0,1
your salary after tax is 0.0
Messages postés
16365
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 juin 2021
2 845
Ce problème vient du fait que tu calcules salaryaftertax (ligne 9) au moment où salary et tax valent 0 (ligne 7 et 8) donc logiquement sa valeur vaut 0.

Si tu veux le résultat du calcul avec les valeurs de salary et tax saisies au clavier (lignes 11 et 13) il faut que le calcul de salaryaftertax ait lieu après.

Remarque : pour éviter toute ambiguïté, déclares tes variables uniquement au moment où tu leur donnes leur valeur, ça ne sert à rien de les déclarer au début du programme si tu ne les utilises pas tout de suite.

Scanner keyboard = new Scanner(System.in);
  
System.out.println("enter your salary");
int salary = keyboard.nextInt();

System.out.println("enter the tax rate");
double tax = keyboard.nextDouble();

double salaryaftertax = salary-(salary*tax);
System.out.println("your salary after tax is"+salaryaftertax); 
Messages postés
8
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
23 décembre 2018
>
Messages postés
16365
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 juin 2021

Merci beaucoup, tu m'as tellement bien éxpliqué que j'ai compris qu'il fallait déplacer la ligne 9 à 14 pour afficher le résultat par la suite sans initialiser à 0 dans la déclaration des variables au début.
grand merci à toi, voici le nouveau code qui marche :

package boucles;
import java.util.Scanner;
public class Tablede5 {

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
double salary;
double tax;

System.out.println("enter your salary");
salary = keyboard.nextInt();
System.out.println("enter the tax rate");
tax = keyboard.nextDouble();
double salaryaftertax = salary-(salary*tax);
System.out.println("your salary after tax is "+ salaryaftertax);
}
}