Problème: programme Java pour diviser les coefficients d'une équation quadratique, par exemple
Si la chaîne d'entrée est la suivante: Donc, j'ai besoin de diviser les coefficients de la chaîne d'entrée donnée et d'obtenir la sortie sous la forme p> j'ai essayé Ceci: p> mais j'ai reçu la sortie 23x2 et 4x et 4.
La sortie réelle nécessaire est 23, - 4, 4 code>. P> p>
5 Réponses :
Si vous utilisez uniquement Quadratiques:
int xsqrd = equation.indexOf("x2");
int x = equation.indexOf("x", xsqrd);
int equ = equation.indexOf("=");
String a = equation.subString(0,xsqrd);
String b = equation.subString(xsqrd+1,x);
String c = equation.subString(x,equ);
Ce code va-t-il obtenir cette sortie si la chaîne d'entrée est "4x2-4x-42 = 0" et "A = 4 b = -4 c = -42" Cela devrait être la sortie
Vous pouvez utiliser une regex comme suit: sortie: p>
Je reçois la réponse comme 0 0 0
Utilisez regex, le modèle suivant fonctionnera:
QuadraticEq{a=4, b=-4, c=-42}
(...) code> ceci est capturant le groupe li>
-
[+ -]? \ d + code> Ceci correspond à un nombre de chiffres, précédé éventuellement par un + code> ou - code> li>
-
[xx] code> ceci correspond à "x" ou "x" li>
-
\ s * code> Ceci correspond à zéro ou plusieurs espaces li>
ul> SO P>
-
([+ -]? \ d +) code> correspond à "A" Argument Li>
-
[xx] 2 code> correspond à "x2" ou "x2" li>
-
\ s * code> correspond à la blancheur optionnelle li>
-
([+ -]? \ d +) code> correspond à l'argument "B" LI>
-
[xx] code> correspond "x" ou "x" li>
-
\ s * code> correspond à la blancheur optionnelle li>
-
([+ -]? \ d +) code> correspond à "C" argument li>
-
\ s * = \ s * 0 code> correspond "= 0" avec des espaces facultatifs li>
ul> permet d'envelopper ceci dans un classe code>: p> xxx pré> notez le \\ code>, ceci est requis par Java. p> Un test rapide: p> xxx pré> sortie: p> xxx pré> p>
Erreur: le groupe de méthodes (int) dans la correspondance de type n'est pas applicable pour les arguments (chaîne)
final int A = Integer.parseint (correspondeur.group ("a")); final int b = integer.parseint (correspondeur.group ("B")); finale INT C = INTEGER.PARSINTINT (MATCHER.GROUP ("C"));
@Joemathew tu me dis que tu utilises Java 6 ?? Il a plus de dix ans, atteignant EOL il y a deux ans. Pourquoi??
Monsieur je l'utilise dans ma nouvelle application Android, y a-t-il un moyen de le modifier
@Joemathew Votre question n'est pas marquée Android . Pourquoi? N'utilisez pas de groupes nommés et obtenez des groupes par index.
@Joemathew a mis à jour la réponse pour supprimer ces fonctionnalités.
La première note: Si vous utilisez le symbole comme délimiteur dans RegExP, vous la perdrez dans des éléments slpites. Je vous suggère d'utiliser le folllaisseur Regexp: alors, vous ne pouvez obtenir que des chiffres.
Le fragment complet du code est: p> mais dans ce cas, vous aurez les symboles "+" en sortie. Pour l'éviter, vous pouvez utiliser integer.parseint (pièces [i]) code> au lieu de parties [i] code>. P> p>
for ( int i = 0 ; i < str.length ; ++i ){
if(asciiOf(str.charAt(i)) == asciiOfIntegerValue ){
addCharInArrayList(str.charAt(i));
}else{
addInFuncList();
addCharInArrayList("_");
}
// join numbers which are not separated by _ and apply BODMAS rule and solve it
// fyi : apologies - very inefficient pseudocode, wrote in a haste
Donc, l'entrée est toujours du format
+/- AX2 +/- BX +/- C CODE>? Cela ressemble à un emploi pour ... regex.Oui. toujours dans ce format
Avez-vous seulement besoin des coefficients? Si vous avez l'intention d'obtenir également les exposants plus tard, je vous recommanderais de construire un petit analyseur pour vos expressions.
J'ai besoin que des coefficients. Si la chaîne d'entrée est "4x2-4x-42 = 0" et "A = 4 B = -4 C = -42", cela devrait être la sortie