0
votes

Java Try-Catch à l'intérieur d'une boucle DO-TI

Dans mon code Java présenté ci-dessous, j'accepte la saisie de l'utilisateur de deux doubles et enveloppe ces valeurs dans une capture d'essai qui gère une impression InputMismatchException. J'ai également enveloppé une boucle DO-tandis que sur ce bloc d'essais. J'essaie d'élaborer le code d'une manière qui gère le cas où si un utilisateur entrait le type incorrect pour "numéro2", la boucle ne recommence pas et demande à l'utilisateur de saisir "numéro1" de nouveau. Je me suis gratté la tête de la meilleure façon de la mettre en œuvre et je suis ouvert à des commentaires ou à des suggestions.

Donc, le cas de test serait; L'utilisateur saisit le type de bon type pour Number1, mais le type incorrect pour Number2, dans quel cas puis-je implémenter le code afin qu'il ne demande que la rentrée de numéro2 au lieu de redémarrer la boucle entière. J'ai essayé une attraction imbriquée, nichée do-while, etc. Toute pensée? xxx


3 commentaires

Vous pouvez avoir des blocs d'essais séparés


Vous pouvez définir vos variables numériques1 et numéro2 en tant qu'objets et avant la boucle et les initialiser avec NULL: double numéro1 = null , vous venez d'envelopper les deux lignes de code demandant une entrée de numéro1 dans un simple si (numéro1 == null)


Ok, juste pour que je comprends votre réponse, vous voulez dire que je peux configurer chaque entrée de l'utilisateur dans sa propre pièce d'emploi.


3 Réponses :


1
votes

Vous pouvez extraire la méthode qui prend fournisseur xxx

et l'utiliser comme xxx


0 commentaires

1
votes

Il suffit de scinder le processus de lecture des 2 valeurs. De cette façon, vous pouvez vérifier individuellement si une exception INPUTMISMATEXE se produit et la gère individuellement pour chaque variable.

continueInput = false;
do {
    try {
        System.out.print("Enter your first number: ");
        double number1 = input.nextDouble();
    } catch (InputMismatchException ex) {
        System.out.println("Try again, a double is required.");
        continueInput = true;
    }
} while (continueInput);

continueInput = false;
do {
    try {
        System.out.print("Enter your second number: ");
        double number2 = input.nextDouble();
    } catch (InputMismatchException ex) {
        System.out.println("Try again, a double is required.");
        continueInput = true;
    }
} while (continueInput);


1 commentaires

Ce serait mieux comme une réponse si vous avez ajouté une explication



1
votes

Essayez ceci,

        Scanner input = new Scanner(System.in);

        boolean continueInput = true;
        double number1 = 0;
        while (continueInput) {
            try {
                System.out.print("Enter your first number: ");
                number1 = input.nextDouble();
                continueInput = false;
            } catch (InputMismatchException ex) {
                System.out.println("Try again, a double is required.");
                input.nextLine();
            }
        }

        continueInput = true;
        double number2 = 0;
        while (continueInput) {
            try {
                System.out.print("Enter your second number: ");
                number2 = input.nextDouble();
                continueInput = false;
            } catch (InputMismatchException ex) {
                System.out.println("Try again, a double is required.");
                input.nextLine();
            }
        }
        System.out.println("You've entered the numbers " + number1 + " " + number2);


1 commentaires

Votre solution est très similaire à la réponse de CODINGTIL, sauf que vous utilisez une boucle de temps au lieu d'une boucle DO-WHIND.