J'utilise l'expression rationnelle suivante: "(? ([0-9] +) -?) +".Mon regex ne correspond pas à une certaine entrée - java
J'essaie de voir s'il y a un caractère négatif entre deux nombres. L'expression rationnelle devrait permettre les moins avant les nombres mais pas entre eux.
Je le teste avec l'entrée de ligne de commande suivante: "4 6 8 2 5-3 4 3 9", le programme retourne ce qu'il est censé retourner (vrai à une valeur booléenne). En outre, lorsque l'entrée de ligne de commande est: "-4 6 8 2 5 -3 4 3 9", le programme fonctionne et renvoie false au booléen (attendu). Mais, chaque fois que je l'entrée: « 4 -6 8 2 4 3 9 5-3 », le programme affiche l'erreur suivante:
Exception in thread "main" java.lang.NumberFormatException: For input string: "5-3"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Ex5.main(Ex5.java:32)
Ce qui signifie que mon booléen est faux, et je ne sais pas pourquoi, parce qu'il devrait retourner vrai.
Adrien, un soupçon, au lieu de mettre tout votre code dans la question, limiter problème pour une seule tranche de code. Par exemple: Pourquoi l'expression rationnelle "(? ([0-9] +) -?) + "ne correspond pas à l'entrée" 4 -6 8 2 5-3 4 3 9 " – Doleron
Pourriez-vous utiliser' boolean hasMinuses = listString.contains ("-") '? Si oui, cela vous évitera de déboguer votre regex – dave
Eh bien non, je ne peux pas, je veux permettre - mais seulement quand ce n'est PAS après un numéro –