Probléme Java

Résolu/Fermé
peouts Messages postés 11 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 31 décembre 2022 - Modifié le 29 nov. 2017 à 18:26
peouts Messages postés 11 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 31 décembre 2022 - 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)
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 nov. 2017 à 18:27
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
peouts Messages postés 11 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 31 décembre 2022
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
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
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); 
0
peouts Messages postés 11 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 31 décembre 2022 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
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);
}
}
0