7
votes

Programme Java pour extraire les coefficients de l'équation quadratique

Problème: programme Java pour diviser les coefficients d'une équation quadratique, par exemple Si la chaîne d'entrée est la suivante: xxx

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 xxx

j'ai essayé Ceci: xxx

mais j'ai reçu la sortie 23x2 et 4x et 4. La sortie réelle nécessaire est 23, - 4, 4 .


4 commentaires

Donc, l'entrée est toujours du format +/- AX2 +/- BX +/- C ? 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


5 Réponses :


0
votes

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);


1 commentaires

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



0
votes

Vous pouvez utiliser une regex comme suit: xxx

sortie: xxx


1 commentaires

Je reçois la réponse comme 0 0 0



2
votes

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>


6 commentaires

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.



0
votes

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: xxx

alors, vous ne pouvez obtenir que des chiffres. Le fragment complet du code est: xxx

mais dans ce cas, vous aurez les symboles "+" en sortie. Pour l'éviter, vous pouvez utiliser integer.parseint (pièces [i]) au lieu de parties [i] .


0 commentaires

0
votes
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

0 commentaires