Maison  >  Article  >  Java  >  Comment utiliser la pile pour implémenter une fonction de calculatrice simple en Java

Comment utiliser la pile pour implémenter une fonction de calculatrice simple en Java

WBOY
WBOYavant
2023-05-26 10:43:062054parcourir

1. Analyse d'idées

Lorsque nous entrons une expression infixe simple similaire à "7*2+100-5+3-4/2", notre compilateur peut utiliser le code que nous avons écrit pour convertir cette expression en Scannez l'expression et calculez le résultat

Il y a deux éléments principaux dans cette expression, l'un est un nombre et l'autre est un symbole, nous devons alors créer deux structures de pile pour stocker les données

  • Number stack numStack : stockage Number

  • symbol stackoperStack : stocke les opérateurs

1. Nous devons d'abord définir un index pour parcourir notre expression

2 Si un numéro est scanné, il est directement placé dans la pile de numéros

3. il sera divisé selon les situations suivantes :

3.1. Si la pile de symboles actuelle est vide, poussez-la simplement directement dans la pile

3.2. Si la pile de symboles a un opérateur, elle doit être comparée

Si le la priorité de l'opérateur actuel est inférieure ou égale à l'opérateur dans la pile, ​​vous devez extraire deux nombres de la pile de numéros, extraire un symbole de la pile de symboles, effectuer l'opération, obtenir le résultat et le mettre dans le pile de nombres. Ensuite, placez l'opérateur actuel dans la pile de symboles

Si la priorité de l'opérateur actuel est supérieure à l'opérateur dans la pile, placez-le directement dans la pile de symboles

4. Lorsque l'analyse d'expression est terminée, supprimez séquentiellement la pile de nombres et les symboles de la pile. Retirez les nombres et les symboles correspondants de la pile et effectuez des calculs

5. Le dernier nombre conservé dans la pile de nombres est le résultat de l'opération

2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer