Probléme Java

Résolu
peouts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
peouts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 10 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 10 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
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