0
votes

Comment choisir et écrire une boucle pour cette tâche spécifique?

Je suis assez nouveau à Java. Désolé s'il s'agit d'une question boiteuse. J'ai cette morceau de code. Ce n'est pas tout ce qui est évidemment.

    char option = scan.next().charAt(0); 

    for (option !='a'||option !='b'||option !='c'||option !='d'||option !='e'||option !='f'||option !='q') {
        System.out.println("Please pick an option from the menu above");
    }

    int lengthOne = stringOne.length(); //Getting the lengths for each string           
    int lengthTwo = stringTwo.length();

    if (option == 'a'|| option == 'A') { //If the user inputs a
        if (lengthOne == lengthTwo) { //If both lengths are equal
            System.out.println("The strings are the same length");
        }


1 commentaires

Que diriez-vous: celui que vous choisissez?


3 Réponses :


0
votes

Ajouter une analyse à l'intérieur de la boucle.

char option = scan.next().charAt(0); 

while (option !='a'||option !='b'||option !='c'||option !='d'||option !='e'||option !='f'||option !='q') {
    System.out.println("Please pick an option from the menu above");
    option = scan.next().charAt(0);
}


0 commentaires

0
votes

Essayez ceci

    Scanner scan = new Scanner(System.in);
    char option = scan.next().charAt(0); 

    while (option != 'a' && option !='b' && option != 'c'&& option !='d'&& option !='e'&& option !='f'&& option !='q') {
        System.out.println("Please pick an option from the menu above");
        option = scan.next().charAt(0);
    }


3 commentaires

Vous pouvez également modifier la déclaration dans pendant pour quelque chose comme ceci: "abcdefq" .indexof (option) == -1


@ R4yy Vous devriez être plus prudent avec le code de publication: votre boucle tandis que vous ne compilez pas, votre logique et doivent être séparés du nom de la variable


Travaillé bien pour moi, je l'ai testé. Peut-être que c'était juste le colle, im Sry alors.



0
votes

La boucle tandis que la boucle peut sembler désordonnée pour ce que vous essayez d'accomplir. J'utiliserais une instruction de commutation à l'intérieur d'une boucle "DOLE".

Si l'entrée de l'utilisateur ne correspond pas à un "cas", il passera à la valeur par défaut. P>

Quand un utilisateur entre 'Pour cesser, alors Boolean ValidSelection code> tourne vers true code> et vous quitterez la boucle "DOLE". P>

    public static void main( String[] args )
{
    Scanner scan = new Scanner( System.in );

    boolean validSelection = false;

    do
    {
        System.out.println( "Please pick an option from the menu above" );
        char option = scan.next().charAt( 0 );
        switch( option )
        {
            case 'a':
                break;
            case 'b':
                break;
            case 'c':
                break;
            case 'd':
                break;
            case 'e':
                break;
            case 'f':
                break;
            case 'q':
                validSelection = true;
                break;
            default:
                System.out.println( "Choice invalid." );
                break;
        }
    }
    while( validSelection == false );
}
}


2 commentaires

Ce qui est exactement le même que lorsque vous utilisez une boucle de temps. La seule différence entre tout moment et tout moment est que la condition d'un DO-WHOI ne sera d'abord vérifiée qu'après la première itération, ce qui signifie qu'il fonctionnera toujours au moins une fois, pendant d'autre part, pourrait ne pas être exécuté, si la condition est défini sur False avant exécution. ! Validselection est un meilleur moyen de vérifier validselection == False, BTW


Cela a effectivement aidé beaucoup et a fait que mon code ait beaucoup plus de sens. Merci!