Utilisation d'une variable dans une déclaration de cas Java


Je fais un analyseur d'expression pour une calculatrice. Les expressions contiendront une variable, par exemple, un utilisateur pourrait entrer "x + 2", ou "y^2". J'ai un switch, et l'un des cas dans l'instruction switch effectue une certaine action lorsqu'il détecte une variable:

case variableSymbol:
                    if (expression.length() == 1) 
                    {
                        rangeResult = x1;
                        break outer;
                    }
                    varFlag = true;
                    varPos = expresPos;
                    break;

À l'origine, j'ai codé en dur une valeur 'x' dans le cas ci-dessus, mais je voudrais donner aux utilisateurs le choix de la variable qu'ils utilisent, alors j'ai ajouté un paramètre char à la fonction d'analyse et l'ai nommé variableSymbol. Voici les paramètres de la fonction:

public static ArrayList<Double> parseRange(String expression, char variableSymbol, double x1, double x2, double step)

Mais Java n'autorise pas les variables comme cas dans les instructions switch. Est-il un moyen de contourner cela? Les solutions qui évitent de réécrire l'instruction switch sont les meilleures, car elles durent plusieurs centaines de lignes.Je vous remercie pour votre aide.

Author: ControlAltDel, 2015-03-23

1 answers

Non, ce n'est pas possible et n'a pas de sens pour un cas switch; ce que vous voulez peut être réalisé avec if-else. La raison en est que switch est généralement implémenté avec des tables de recherche, étant plus efficace que if-else; mais pour y parvenir, la branche doit être configurée au moment de la compilation.

 0
Author: m3th0dman, 2015-03-23 19:42:22