7
votes

Java Question: Est-il possible d'avoir une instruction de commutation dans une autre?

J'ai une question et aucune réponse oui ou non. Je voudrais poser une autre question oui ou aucune question si oui était la réponse. Mon instructeur veut que nous utilisions Charat (0) en tant qu'entrée pour la réponse.

est-il possible d'avoir une instruction de commutation dans une autre (comme une instruction IF imbriquée)?

EDIT: Voici un échantillon de mon pseudo code = xxx


4 commentaires

Dans le temps qu'il vous a fallu pour écrire cette question, vous auriez pu l'avoir testé vous-même ... en disant ...


Je pense que le point de sorte que les gens * n n'ont pas besoin d'écrire du code pour tester une idée.


@ande_Turner: non. Alors, est là pour répondre aux questions, pas pour faire des choses plutôt que des personnes.


@Valentinrocher no.


4 Réponses :


18
votes

Oui, mais pas. Si vous avez besoin d'un autre niveau de logique comme ça, placez le deuxième commutateur dans sa propre méthode avec un nom descriptif.

Edit: par exemple que vous avez ajouté, vous avez deux conditions booléennes. Je recommanderais contre l'utilisation du commutateur du tout, en utilisant si & sinon conditionnels à la place. Utilisez (string.charat (0) == 'y') comme cas de test, ou quelque chose de méthodique comme boolean isy (chaîne de chaîne finale) {retour (String.Charat (0) = = 'y' || string.charat (0) == 'y'); }


0 commentaires

1
votes

C'est possible, mais ce serait très convolué et difficile à lire. Il y a presque certainement une meilleure façon, comme appelant une méthode dans la première instruction de commutation et effectuant un traitement plus nécessaire (y compris un autre commutateur si nécessaire) dans cette méthode.


0 commentaires

-1
votes

La plupart des langages de programmation sont orthogonaux. Cela signifie que l'utilisation d'une fonctionnalité ne dépend généralement pas de l'emplacement, si significatif.

Par exemple, vous ne pouvez pas déclarer une variable locale en public.


1 commentaires

@SRini: Je ne vois pas comment cela répond à la question. Spécifiquement, il ne dis que si commutateur en Java est orthogonal. L'orthogonalité est la propriété que la programmation des concepteurs de langage s'efforce, mais rarement entièrement réalisez. Vous ne pouvez pas déduire que toute construction de langue particulière sera orthogonale sans comprendre la spécification de la langue. Ce peut être l'une des exceptions.



2
votes

Oui. Les commutateurs rompent le modèle de relevé de bloc de langue, mais ceci est principalement dû à C / C ++ à partir de laquelle l'instruction de commutation utilisée par Java est basée sur Java.

Dans les trois langues, l'instruction de commutation prend le formulaire suivant: P>

String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
     case n:
        statement 1;
        statement n;
        break;
     case n+1:
        int innerVariable = getInnerVariable();
        switch(innerVariable) {
            case 1:
                message = "IT WAS 1";
                break;
            default:
                message = "WHY WOULD YOU DO THIS?  OH THE HUMANITY!";
        }
        break;
     // Optionally more statements
     (optional) default:
        statement 1;
        statement n;
}


2 commentaires

juste faire attention au code ci-dessus - si vous le traduisez en Java, notez que les déclarations de cas doivent être des expressions constantes


Chii - Bon point. De plus, les Enums Java 5 sont également autorisés dans les déclarations de commutation.