2017-09-30 6 views
-2

Java En cours d'apprentissage, et d'essayer d'analyser une équation mathématique pour les entrées valides:Expression régulière pour parser Simple Maths équation en Java

Par exemple, l'utilisateur doit entiers d'entrée sous la forme:

Opérande Opérateur Opérande

dans cet ordre spécifique, et le programme devrait alors être en mesure de dire si les entrées étaient dans cette forme, puis élaborer l'équation simple.

Un exemple serait:

4 * 8 dont le résultat donnerait que 32

le programme rejette aussi quelque chose comme 45,6 * 0,3 ou 45 + 3/4

Pour cette pour travailler, dois-je utiliser l'expression régulière, ou une autre méthode de boucles si?

+1

Il es zillions d'implémentations de l'analyseur mathématique, un google pour "analyseur math java". Et non, la plupart d'entre eux n'utilisent pas d'expressions rationnelles, il n'y a pas besoin. – user3159253

+0

Vous pouvez utiliser [regex] (https://regex101.com/r/KLovyh/1) si votre exigence est simplement de vérifier la présence d'un utilisateur valide. – SomeDude

+0

Vous devriez rechercher un peu, essayer quelque chose et poser une question si vous êtes coincé. Comme c'est, votre question est trop large. – Dici

Répondre

2

Vous pouvez utiliser regex d'une part, se débarrasser de l'entrée non valide, et d'autre part utiliser des groupes pour extraire les opérandes et le fonctionnement et appliquer les mathématiques

/^(\\d+)\\s*([+\\-*\\/])\\s*(\\d+)$/ 

Modifier :

Comme Rory Daulton a souligné, les entiers signés sont exclus du RegEx ci-dessus, de sorte que le dessous d'un doivent être utilisés à la place

/^([+\\-]?\\d+)\\s*([+\\-*\\/])\\s*([+\\-]?\\d+)$/ 
+0

Comment puis-je implémenter cela dans le code? Comme, où cela irait-il? – Nawlidge

+0

J'ai laissé la partie la plus facile pour vous – mshaaban

+0

Je reçois toujours une erreur de caractère d'échappement incorrecte, pourriez-vous me donner une ligne d'exemple, à l'endroit où il appartiendrait? – Nawlidge