J'ai écrit ce code, cependant, chaque fois que j'entre une valeur décimale, cela ne fonctionne pas. Comment puis-je faire fonctionner ce code même si j'entre une valeur décimale? Par exemple, si j'entre une valeur de 7,5, il doit afficher que "les frais de port sont de 9,45 $"
import java.util.Scanner; public class IfElse { public static void main(String[] args) { int marksObtained; Scanner input = new Scanner(System.in); System.out.println("Please enter a package weight in pounds:"); marksObtained = input.nextInt(); if (marksObtained>20) { System.out.println("The package is too heavy to be shipped"); } else if (marksObtained>10) { System.out.println("The shipping cost is $12.50"); } else if (marksObtained>3) { System.out.println("The shipping cost is $9.45"); } else if (marksObtained>1) { System.out.println("The shipping cost is $4.95"); } else if (marksObtained>0) { System.out.println("The shipping cost is $2.95"); } else if (marksObtained<0) { System.out.println("The weight must be greater than zero"); } } }
4 Réponses :
Vous pouvez utiliser nextFloat
ou nextDouble
Scanner s = new Scanner (System.in); float a = s.nextFloat (); System.out.println(a);
En utilisant nextInt
, vous vous attendez à ce qu'une valeur int soit entré et lancera une java.util.InputMismatchException
si un int
n'est pas entré
Regardez le code que vous utilisez pour lire l'entrée:
double marksObtained = input.nextDouble();
La clé ici est de comprendre qu'un int
ne peut représenter que des nombres entiers, pas des décimales . Pour les décimales, vous devez utiliser un double ou un flotteur. Par exemple:
int marksObtained;`enter code here` marksObtained = input.nextInt();
Je vous suggère de revenir en arrière et de revoir les types de données de base pris en charge par Java. Vous devez également vous familiariser avec la documentation de la classe Scanner ainsi que le reste de la documentation des API Java standard.
nextInt ()
ne fonctionne que pour les entiers. Utilisez nextDouble()
Utilisez la méthode nextDouble
comme ci-dessous
public static void main(String[] args) { double marksObtained; System.out.println("Please enter a package weight in pounds:"); Scanner input = new Scanner(System.in); marksObtained = input.nextDouble(); input.close(); if (marksObtained > 20) { System.out.println("The package is too heavy to be shipped"); } else if (marksObtained > 10) { System.out.println("The shipping cost is $12.50"); } else if (marksObtained > 3) { System.out.println("The shipping cost is $9.45"); } else if (marksObtained > 1) { System.out.println("The shipping cost is $4.95"); } else if (marksObtained > 0) { System.out.println("The shipping cost is $2.95"); } else if (marksObtained < 0) { System.out.println("The weight must be greater than zero"); } }
Et fermez le scanner, c'est une bonne pratique de le faire.
astuce:
nextInt ()
pour obtenir des flottants / doubles?si vous voulez lire en décimal, utilisez
nextDouble ()
et vérifiez également si les conditionsHeureux de voir que vous l'avez trié. Veuillez voter pour et accepter une réponse ci-dessous