0
votes

Si incorrect, posez la question à nouveau jusqu'à ce que

S'il vous plaît voir mon code ci-dessous.

Console.WriteLine("Enter a number between 1 and 5");
string _numberInt = Console.ReadLine();
Convert.ToInt32(_numberInt);

if (_numberInt != "1, 5")
{
    throw new System.ArgumentException("Please use a number between 1-5.");
}

c#

5 commentaires

Recherche Comment créer un pendant boucle.


et comment vérifier un "entre" -Condition


Vous avez besoin d'une boucle, ne jetez pas une exception, n'utilisez pas de convertir, utilisez Tryparse, utilisez un integer var et utilisez <= et> = opérateurs.


Ne pas utiliser d'exception pour un contrôle de flux . argumentException est lorsque la méthode reçoit un mauvais argument. Si vous appelez une méthode (à l'intérieur essayer / attraper ) tout irait bien, mais d'organiser une boucle - ne le faites pas.


Merci pour vos commentaires tout. Je ferai d'autres recherches!


4 Réponses :


0
votes

Vous avez besoin d'un pendant que code> en boucle pour vérifier à plusieurs reprises et que l'utilisateur entrait un numéro jusqu'à ce que la condition soit appariée. C'est ce que vous voulez:

while (true) {
    Console.WriteLine("Enter a number between 1 and 5 > ");
    int _numberInt = Convert.ToInt32(Console.ReadLine());

    if (_numberInt <= 5 && _numberInt >= 1) { // Check if number is between 1 and 5
        break; // Number is between 1 and 5. Break.
    }
    else { // Number is not between 1 and 5
        throw new System.ArgumentException("Please use a number between 1-5.");
    }
}


0 commentaires

0
votes
int uservalue;
for(;;) // what kind of loop you use doesn't really matter
{
    Console.WriteLine("Enter a number between 1 and 5");
    // use TryParse to validate and convert user input.
    // "continue" immediatly goes back to start of loop (= next iteration)
    if( !int.TryParse(Console.ReadLine(), out uservalue)) continue;
    // check for correct value range
    if(5 >= uservalue && uservalue >= 1) break;
}
Console.WriteLine("You entered {0}", uservalue);

0 commentaires

0
votes

Je pense que cela devrait faire ce dont vous avez besoin. Cela ne jette pas cependant une exception. Il n'a pas besoin de, n'est-ce pas? XXX


0 commentaires

1
votes

Vous devez utiliser les > = code> et des opérateurs pour vérifier l'entrée après avoir essayé de le convertir d'une chaîne à un numéro:

while(true)
{
    Console.WriteLine("Enter a number between 1 and 5");
    var input = Console.ReadLine();

    if(int.TryParse(input, out var value) && value >= 1 && value <= 5)
    {
        Console.WriteLine("Thanks");
        break;
    }
    else
    {
        Console.WriteLine("invalid input")
    }
}


0 commentaires