7
votes

Calculateur postfix Java

OK, je dois donc lire dans une expression postfix à partir d'un fichier. L'expression postfix doit avoir des espaces pour séparer chaque opérateur ou opérande. Ce que j'ai jusqu'à présent ne fonctionne que s'il n'y a pas d'espaces entre les opérateurs ou les opérandes du fichier d'entrée. (c'est-à-dire si le fichier a 12 ans et plus le résultat que je reçois est 3.) Pour ce faire, je pense que j'ai besoin de goûter à l'entrée, mais je ne sais pas comment. C'est ce que j'ai jusqu'à présent. Merci pour toute réponse. xxx


1 commentaires

Jetez un coup d'œil à StringTokenizer . Il togène sur l'espace blanc (espaces, onglets, nouvelles lignes, etc.) par défaut.


3 Réponses :


3
votes

Il y a plusieurs choses que vous devez changer, que vous pouvez faire étape par étape.

  1. Déclarez votre pile pour contenir integer S plutôt que caractère s.
  2. Dans le code qui lit l'entrée, comptez sur string s au lieu de caractère s.
  3. analyse des opérandes en utilisant integer.parseint () . Cela convertira chaîne s sur entier s. (En fait, il les convertit vers int S, mais dans votre cas, cette différence n'a pas d'importance.)
  4. Définissez le délimiteur de scanner à l'aide de scanner.usedelimiter () à \ s + , cela correspond à une séquence de tous les caractères blancheurs.

    Il y a bien sûr d'innombrables d'autres moyens de traiter votre contribution, mais j'ai essayé de vous donner une idée de la façon de changer votre code existant pour faire ce qu'il faut faire.


0 commentaires

0
votes

Vous n'avez pas besoin d'un scanner

simplement utiliser Bufferedreader pour lire le fichier, puis utilisez la méthode de la méthode de sa méthode pour obtenir la ligne

puis utilisez xxx

et vous obtiendrez le tableau des "jetons", qui peuvent être traités dans votre code.

Pour identifier le nombre, vous pouvez utiliser la regex suivante: xxx


1 commentaires

L'utilisation d'un scanner est en réalité plus facile ici. Suivant () Par défaut récupérerait le prochain jeton séparé de WhitSpace. Les motifs peuvent être utilisés ensuite, bien sûr.



3
votes

Pour vous jetonner, vous pouvez utiliser le string.split () avec un seul espace sous forme de séparateur ; xxx

ici est une solution complète que je viens d'écrire qui utilise une implémentation pile basée sur une liste lié ​​individuellement liée afin de créer une calculatrice postfix;

A - postfixcalculator xxx

b - singylinkedlisttack xxx

c - démo xxx

d - fichier d'entrée d'échantillon: "postfix.txt" xxx

e - sortie de démonstration xxx


0 commentaires