Files
BUT2/TP_DEV3.2/Piles/Arithmetik.java

52 lines
1.5 KiB
Java
Raw Normal View History

2025-10-23 14:56:55 +02:00
import java.util.Stack;
public class Arithmetik {
public static void main(String[] args) {
// Exemple : 18 6 1 2 + 9 + / + 8 7 - *
// String[] args = {"18", "6", "1", "2", "+", "9", "+", "/", "+", "8", "7", "-", "*"};
Pile<Integer> pile = new Pile<>();
for (String element : args) {
if (estNombre(element)) {
// Si cest un nombre, on le met dans la pile
pile.push(Integer.parseInt(element));
} else {
// Sinon cest un opérateur on dépile 2 valeurs
int b = pile.pop();
int a = pile.pop();
int resultat = calculer(a, b, element);
// On empile le résultat
pile.push(resultat);
}
}
// À la fin, il reste le résultat final dans la pile
System.out.println("Résultat = " + pile.pop());
}
// Vérifie si une chaîne est un nombre
public static boolean estNombre(String s) {
try {
Integer.parseInt(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
// Calcule a (op) b
public static int calculer(int a, int b, String op) {
switch (op) {
case "+": return a + b;
case "-": return a - b;
case "*": return a * b;
case "/": return a / b;
default:
throw new IllegalArgumentException("Opérateur inconnu : " + op);
}
}
}