Probléme Java [Résolu]

peouts 7 Messages postés mercredi 24 novembre 2010Date d'inscription 29 novembre 2017 Dernière intervention - 29 nov. 2017 à 15:19 - Dernière réponse : peouts 7 Messages postés mercredi 24 novembre 2010Date d'inscription 29 novembre 2017 Dernière intervention
- 29 nov. 2017 à 21:58
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)
Afficher la suite 

4 réponses

Répondre au sujet
KX 15100 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention - 29 nov. 2017 à 18:27
+1
Utile
3
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
peouts 7 Messages postés mercredi 24 novembre 2010Date d'inscription 29 novembre 2017 Dernière intervention - 29 nov. 2017 à 20:02
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
KX 15100 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention - 29 nov. 2017 à 21:37
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); 
peouts 7 Messages postés mercredi 24 novembre 2010Date d'inscription 29 novembre 2017 Dernière intervention > KX 15100 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention - 29 nov. 2017 à 21:58
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);
}
}
Commenter la réponse de KX