Umgekehrte Polnische Notation / Postfix-Notation über Stack programmieren, so richtig?

Hallo,

ich soll die umgekehrte polnische Notation / Postfix-Notation in Java mit Hilfe eines Stacks programmieren. Dafür stehen mir nur folgende Informationen zur Verfügung:

public class IntegerStack {
  public boolean emptystack();
  public int head();
  public void push(int i);
  public int pop();
}

Leider zeigt ein Testfall als Fehler Folgendes an:

IntegerStack s = new IntegerStack();
String[] input = {"1", "2", "*", "3", "4", "*", "+"};
Calculator(input, s);
System.out.println(s.compareHistory(new String[] {
  "[1]",
  "[1, 2]",
  "[1]",
  "[]",
  "[2]",
  "[2, 3]",
  "[2, 3, 4]",
  "[2, 3]",
  "[2]",
  "[2, 12]",
  "[2]",
  "[]",
  "[14]",
  "[]" }
));

// erwartet:
true
// erhalten:
wrong history length: target 14 - is 0
false

Ich kann diesen Fehler nicht deuten. Kann mir bitte jemand sagen, was da falsch sein soll? Ich weiß nicht, was ich beheben soll.

Anbei mein Code:

public int Calculator(String[] input, IntegerStack s) {
  s = new IntegerStack();

  for (int i = 0; i < input.length; i++) {
    switch(input[i]) {
      case "+":
        int x = s.pop();
        int y = s.pop();

      
          s.push(y + x);
        
        break;
      case "-":
        x = s.pop();
        y = s.pop();

       
          s.push(y - x);
        
        break;
      case "/":
        x = s.pop();
        y = s.pop();

      
          s.push(y / x);
       
        break;
      case "*":
        x = s.pop();
        y = s.pop();

        
          s.push(y * x);
        
        break;
      case " ":
        break;
      default:
        if (input[i] != null) {
          s.push(Integer.parseInt(input[i]));
        }
        else {
        }
        ;
      }
    }

    int z = s.pop();
    return z;
  }
Computer, Freizeit, Studium, Schule, Mathematik, programmieren, Java, Informatik, Physik, stack, Algorithmen und Datenstrukturen
Warum fallen Feder und Hammer gleich schnell im Vakuum?

Hallo,

jeder kennt ja das typische Beispiel, dass im Vakuum eine Feder genauso schnell fällt wie ein Hammer, da kein Luftwiederstand vorhanden ist. Ist ja alles soweit schön und gut.

Aber eine Sache frage ich mich immer:

Müsste nicht eigentlich die Feder schneller fallen als der Hammer? Denn die Feder hat ja weniger Masse als der Hammer. Der Hammer würde der Masse der Erde nämlich näher kommen als es die Feder tut. Und Massen, die sich ähnlich sind haben ja auch nicht so eine starke Gravitation zu einander.

Hier ein Beispiel:

Auf dem Mond falle ich langsamer, da die Gravitation dort geringer ist. Das liegt daran, dass ich der Masse des Mondes näher komme. Die Erde wiederum ist viel größer als der Mond. Der Erde komme ich also nicht so nah mit meiner Masse wie beim Mond. Also falle ich dort auch schneller runter.

Mir ist natürlich klar, dass der Unterschied der Masse vom Hammer und der Feder bezogen auf die Erde ein Witz ist. Hier kommt es auf astronomisch kleine Werte an. Aber müsste dann die Feder in der Theorie nicht ein paar millionstel Sekunden (oder noch weniger) früher auf der Erde ankommen als der Hammer?

Weil wenn wir statt dem Hammer sagen wir den Mond nehmen würden, ist es doch klar, dass der Mond nicht ansatzweise so schnell auf die Erde wie die Feder fliegen würde, oder!? Und im Grunde verkörpert der Mond doch das selbe Prinzip wie der Hammer(also in diesem Beispiel natürlich): die Masse ist mehr, als die der Feder!

Natur, Allgemeinwissen, Mathematik, Technik, Kraft, Wissenschaft, Astronomie, Astrophysik, Atom, Gravitation, Maße, Naturwissenschaft, Newton, Physik, Relativitätstheorie, Schwerkraft, Albert Einstein, Anziehungskraft, allgemeine Relativitätstheorie, Isaac Newton

Meistgelesene Beiträge zum Thema Mathematik