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.
3 Réponses :
Il y a plusieurs choses que vous devez changer, que vous pouvez faire étape par étape. P>
pile code> pour contenir integer code> S plutôt que caractère code> s. li>
- Dans le code qui lit l'entrée, comptez sur
string code> s au lieu de caractère code> s. li>
- analyse des opérandes en utilisant
integer.parseint () code>. Cela convertira chaîne code> s sur entier code> s. (En fait, il les convertit vers int code> S, mais dans votre cas, cette différence n'a pas d'importance.) Li>
- Définissez le délimiteur de scanner à l'aide de
scanner.usedelimiter () code> à \ s + code>, cela correspond à une séquence de tous les caractères blancheurs. LI>
ol>
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. P>
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 p>
puis utilisez p> et vous obtiendrez le tableau des "jetons", qui peuvent être traités dans votre code. p> Pour identifier le nombre, vous pouvez utiliser la regex suivante: p>
L'utilisation d'un scanner est en réalité plus facile ici. Suivant () Code> Par défaut récupérerait le prochain jeton séparé de WhitSpace. Les motifs peuvent être utilisés ensuite, bien sûr.
Pour vous jetonner, vous pouvez utiliser le ici est une solution complète que je viens d'écrire qui utilise une implémentation string.split () code> avec un seul espace sous forme de séparateur fort>;
A - postfixcalculator h3>
b - singylinkedlisttack h3>
c - démo h3>
d - fichier d'entrée d'échantillon: "postfix.txt" h3>
e - sortie de démonstration h3>
Jetez un coup d'œil à
StringTokenizer Code>
. Il togène sur l'espace blanc (espaces, onglets, nouvelles lignes, etc.) par défaut.