Ce programme est censé lire les valeurs de l'entrée de chaîne et retourner un résultat.pop() ing stacks ne semble pas effacer les valeurs
Cependant, quand j'utilise
System.out.println(Arrays.toString(stack.toArray()));
pour vérifier ce qui semble la pile ressemble à la fin, ou même au cours du programme, je remarquai que la méthode pop() ennemi de la pile ne pas être enlever les éléments, il revient. Je fais probablement quelque chose d'horriblement mal, mais je n'ai pas réussi à le comprendre.
J'apprécierais vraiment tout aperçu!
// Test example : (((1+1)+1)+1)
import java.util.*;
public class Task2
{
public static void main(String[] args) //run Start() method
{
System.out.print("Enter an expression, or press Enter to quit: ");
Stack<String> stack = new Stack<String>();
Scanner scanner = new Scanner(System.in);
String n = scanner.nextLine();
if(!n.isEmpty())
{
for(int i = 0 ; i < n.length() ; i++)
{
if(!(n.charAt(i) == ')'))
{
stack.push(n.charAt(i) + "");
}
else
{
int two = Integer.parseInt(stack.pop());
char op = (stack.pop()).charAt(0);
int one = Integer.parseInt(stack.pop());
switch(op)
{
case '+':{stack.push((one + two) + "");}
case '-':{stack.push((one - two) + "");}
case '*':{stack.push((one * two) + "");}
case '/':{stack.push((one/two) + "");}
}
}
}
}
else
{
System.out.print("\ngoodbye");
System.exit(0);
}
}
}
Désolé pour le manque de commentaires, et merci!
bonne solution !! – Kyte