1
votes

Comment rendre valide une entrée décimale?

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");
        }
  }
}


3 commentaires

astuce: nextInt () pour obtenir des flottants / doubles?


si vous voulez lire en décimal, utilisez nextDouble () et vérifiez également si les conditions


Heureux de voir que vous l'avez trié. Veuillez voter pour et accepter une réponse ci-dessous


4 Réponses :


1
votes

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é


0 commentaires

1
votes

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.


0 commentaires

1
votes

nextInt () ne fonctionne que pour les entiers. Utilisez nextDouble()


0 commentaires

1
votes

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.


0 commentaires