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
Schlecht "ausgebildet" und kaum Chancen im Berufsfeld?

Guten Sonnabend erstmal,

Ich habe eher ein Problem in meinem Beruf bzw mit meiner Zukunft:

Ich mache derzeit eine Ausbildung zum Gärtner: Garten- und Landschaftsbau, eigentlich mag ich den Beruf. (öffentlichen Dienst)

Problem ist leider nur, ich bin sehr schlecht ausgebildet b.z.w das meiste Wissen habe ich mir selber irgendwie beigebracht, aber praktisch bin ich einfach schlecht ( Habe in Pflanze eine 1- und in der Theorie eine 2, aber in der Praxis bin ich durchgerasselt, da habe ich eine 5,3, also sehr schlecht), in meinem Betrieb machen wir eher auch nur Pflege und Pflanzungen ggf Rollrasen verlegen) = Keine Trockenmauer gebaut, keine Stufen erstellt und und und

Ich schätze die Lage derzeit so ein, dass ich in der freien Wirtschaft nun mal keine wirkliche Chance haben, da die meisten Betriebe sich auf den bautechnischen Teil fokussiert sind und die meisten wollen eher Berufserfahrene --> Ist es also schlau eine zweite Ausbildung zu machen in einem komplett anderen Bereich, da ich kaum bis garnicht ausgebildet worden bin, aber das hießt wiederum, dass ich erst wahrscheinlich mit 23/24 ausziehen kann (was aber eher eine sinnfreie sorge ist)

Ausserdem: Ich muss noch die WDH-Prüfung machen, da ich wie gesagt durch die Praxis durchgefallen bin

Leben, Arbeit, Beruf, Finanzen, Tipps, Schule, Handwerk, Meister, Büro, Berufsschule, Betriebswirt, Freiwilliges Soziales Jahr, Informatik, Techniker, Weiterbildung, Zukunftsangst, Ausbildungsförderung, Ausbildung und Studium, Beruf und Büro
Like Button implementieren?

Schönen guten Abend allerseits,

Ich arbeite gerade an einer Website.

Auf dieser möchte ich gerne einen Like-Button implementieren und nicht auf irgendein fertiges Produkt zugreifen.

Ich frage mich bloß, wie ich das am geschicktesten anstellen kann.

Meine Herangehensweise:

Ich persönlich habe mir eine MySQL Tabelle namens likes erstellt, mit deren Hilfe ich ein erneutes Liken eines Nutzers (der den Like-Button schon einmal gedrückt hat) verhindern möchte.

Zur Identifizierung des Nutzers würde ich entweder eine Session-ID oder die IP-Adresse des Nutzers in der Tabelle speichern.

Das Problem bei der Session-ID ist, dass das Cookie nach einiger Zeit "verfällt" bzw. bei der nächsten Löschung der Cookies nicht mehr vorhanden ist und erneutes liken wieder möglich ist. Zudem ist das erneute Liken in einem anderen Browser möglich.

Das Problem bei der IP-Adresse ist, dass ich nicht weiß, ob das ganze legal ist und erneutes Liken spätestens bei einer neuen IP-Adresse möglich ist.

Beim Laden der Seite stelle ich dann eine Datenbank-Abfrage mittels PHP an die Tabelle, in dem ich nach der entsprechenden Session-ID bzw. IP-Adresse suche.

Das sieht bei mir dann (mittels PDO) etwa so aus:

$stmt = $database->prepare('SELECT * FROM `likes` WHERE `sessid` = :sessid');
$stmt->execute(['sessid' => session_id()]);
$like = $stmt->fetch();

Im späteren Programmablauf wird dann überprüft, ob $like nicht "leer" ist und dementsprechend der Like-Button ($like ist "leer") oder nur die Likes ($like ist nicht "leer") ausgegeben werden.

Wenn der Like-Button nun schließlich gedrückt wurde soll eine asynchrone Anfrage an ein PHP Skript mittels AJAX gestellt werden. Im PHP Skript selbst werden entsprechende Likes in einer anderen Tabelle um 1 hochgezählt. Das PHP Skript selbst stellt dann noch eine Datenbank-Abfrage, in dem die aktuellen Likes aus der Tabelle geholt werden. Diese werden dann auch vom PHP Skript an den Client weitergegeben und im HTML-Dokument mittels JavaScript aktualisiert.

Die ganze Sache kommt mir nur nicht sonderlich elegant vor. Darunter auch die bei jedem Seitenaufruf überprüfende Abfrage, ob von diesem Nutzer bereits geliked wurde.

Zudem frage ich mich immer noch, ob ich mit der IP-Adresse oder einer Session-ID arbeiten soll - hat ja beides Vor- und Nachteile.

Was haltet ihr von meinem Ansatz? Habt ihr selbst Vorschläge wie oder was man besser machen könnte?

Danke im Voraus!

LG

Webseite, programmieren, AJAX, Informatik, MySQL, implementierung, like-button
Java Binary Tree Remove Methode implementieren?

Hey Leute,
Ich versuche folgende Binary Tree Methode zu implementieren:

public void remove(T data) {
    root = remove(root, data);
}

private Nodes<T> remove(Nodes<T> root, T data) {
    Nodes<T> current = root;
    if (current == null) {
        return current;
    }
    if (current.getData().compareTo(data) > 0) {
        current.getLeftChild() = remove(current.getLeftChild(), data);
    } else if (current.getData().compareTo(data) < 0) {
        current.getRightChild() = remove(current.getRightChild(), data);
    } else {
        if (current.getLeftChild() == null && current.getRightChild() == null) {
            current = null;
        } else if (current.getRightChild() == null) {
            current = current.getLeftChild();
        } else if (current.getLeftChild() == null) {
            current = current.getRightChild();
        } else {
            Nodes<T> temp = findMinFromRight(current.getRightChild());
            current.getData() = temp.getData();
            current.getRightChild() = remove(current.getRightChild(), temp.getData());
        }
    }
    return current;
}

Er zeigt mir bei folgenden Abschnitten "Variable expected" an, aber hier sollte keine Variable erwartet werden:

if (current.getData().compareTo(data) > 0) {
    current.getLeftChild() = remove(current.getLeftChild(), data);
} else if (current.getData().compareTo(data) < 0) {
    current.getRightChild() = remove(current.getRightChild(), data);

...

 else {
    Nodes<T> temp = findMinFromRight(current.getRightChild());
    current.getData() = temp.getData();
    current.getRightChild() = remove(current.getRightChild(), temp.getData());
}

Danke schonmal für eure Hilfe!

Computer, programmieren, Java, Informatik, Liste, IntelliJ IDEA
Überfordert mit der Ausbildung (Fachinformatik)?

Hey,

ich mache momentan eine Ausbildung zum Fachinformatiker für Anwendungsentwicklung und ich bin maßlos überfordert.

Ich selber habe nur sehr wenig Erfahrung im Bereich der Programmierung und möchte mich eben genau deswegen ausbilden lassen. Das Problem nur ist, dass ich Aufgaben bekomme, die für einen blutigen Anfänger wie mir, viel zu schwer sind. z.B musste ich direkt am Anfang einen Parser schreiben, dann habe ich dazu ein paar Internetseiten bekommen wo ich mich darüber informieren kann und das wars. Ich weiß nicht, aber ich dachte ich sollte doch zumindest mal die Grundlagen verstehen, bevor ich mit so einem Projekt starte. Und vergisst nicht, auch wenn das für euch einfach erscheint, versetzt euch in die Lage von jemanden, der damit noch nicht wirklich viel am Hut hatte. Wenn ich dann einige Dinge nicht verstehe und nachfrage, bekomme ich mein Problem mit Fremdwörtern erklärt, die ich widerrum auch nicht verstehe. Also bin ich am Ende genau so Ratlos wie vorher auch. Ich habe meine Ausbilder auch einmal darauf angesprochen, dass es eventuell sein kann, dass es etwas zu kompliziert für mich ist, darauf wurde mir nur mit "nein, das mussten wir damals auch tun" geantwortet. Ich bin einfach dabei Aufgaben zu bearbeiten, von denen ich keine Ahnung habe, und ich im Prinzip einfach nur ins Internet gehe, irgendeinen Code kopiere, bei mir einfüge und die Fehler davon zu googlen. Verstehen tue ich davon allerdings nichts.

Habt ihr eine Idee, was ich tun kann, damit ich nicht vor so einem großen Fragezeichen stehe? ich verliere immer mehr und mehr die Motivation.

Liebe Grüße

Schule, Ausbildung, Anwendungsentwicklung, Fachinformatiker, Informatik, Ausbildung und Studium
Die längste Pfadlänge, die ich im Windows Explorer erzielen kann, sind 492 Zeichen, obwohl nur 260 Zeichen unter Windows erlaubt sind?
Es heißt: "Normalerweise ist die Pfadlänge unter Windows auf 260 Zeichen beschränkt, d. h. drei Zeichen für die Laufwerksangabe, 256 Zeichen für den Pfad innerhalb des Laufwerks und ein nicht sichtbares String-Terminierungszeichen. Längere Pfade bis zu 32.767 Zeichen, wie sie von NTFS unterstützt werden, sind mittels UNC (Uniform Naming Convention) möglich, d. h. \\?\ muss vorangestellt werden." https://de.wikipedia.org/wiki/Dateiname

Die längste Pfadlänge, die ich im Windows Explorer erzielen kann, sind allerdings 492 Zeichen, obwohl nur 260 Zeichen erlaubt sein sollen. Wie kann das sein?

Meine Vorangehensweise:

Ich habe jetzt unter Windows probiert, diese Grenzen im Windows Explorer zu testen und habe einen Ordner im Hauptverzeichnis erstellt sowie eine Datei, die sich in diesem Ordner befindet. Der Dateipfad hat nun exakt 259 Zeichen und sieht so aus:

D:\aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyy\1234567890.txt

Ich habe festgestellt, dass ich im Windows Explorer den Ordnernamen aber noch weiter verlängern kann, es lassen sich komischerweise drei weitere Zeichen hinzufügen, also sind es nun 262 Zeichen und somit zwei zu viel.

D:\aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyy\1234567890.txt

Wenn ich die Datei "1234567890.txt" nun in das Hauptverzeichnis verschiebe, also dorthin:

D:\1234567890.txt

Und wenn ich den Dateinamen mit Dateiendung auf insgesamt 244 Zeichen erweitere:

123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt

Dann kann ich diese Datei komischerweise sogar wieder in den Ordner zurückverschieben:

D:\aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyy\123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt

Somit beträgt die längste Pfadlänge, die ich im Windows Explorer erzielen kann, 492 Zeichen, obwohl nur 260 Zeichen erlaubt sein sollen. Wie kann das sein?

In diesem Zustand kann ich sogar die Textdatei normal öffnen, Inhalte hinzufügen und abspeichern, nur den Dateinamen kann erst dann wieder verändern, wenn ich die Datei zurück in das Hauptverzeichnis verschiebe.

Computer, Windows, Microsoft, Datei, Technik, System, Informatik, Technologie, byte, Dateiname, Verzeichnis
Schlecht in Mathe, trotzdem Wirtschaftsinformatik studieren?

Hey,

ich würde gerne Wirtschaftsinformatik studieren, bin aber nicht so gut in Mathe (Note 3-4). Lag während der Schulzeit aber eher an dem fehlenden Interesse und der geringen Lernbereitschaft für dieses Fach. Im Fach Wirtschaft/Recht war ich immer top und "programmieren" kann ich auch schon ein wenig (Java, HTML/CSS, Javascript).

Unserer Mathelehrer meinte aber immer, wir sollen lieber nix mit Informatik studieren, wenn wir Mathe nicht können. RIP :(

Auf der einen Seite interessiere ich mich sehr für BWL und Informatik, auf der anderen Seite soll das Studium ja nicht gerade leicht sein, eben aufgrund der Mathematik, die viele unterschätzen. Ich möchte nicht ebenfalls zu dieser Gruppe gehören. Mathe ist ja bekanntlich auch ein "Aussortierfach" am Anfang des Studiums.

Ich habe mir mal die Themen vom Studiengang insbesondere im Bereich Mathematik/Statistik angeschaut und hab' da so meine Bedenken und kann den Schwierigkeitsgrad überhaupt nicht einschätzen...

Hört sich für mich recht schwierig an, obwohl ich manche Sachen schon in der 11./12.Klasse hatte.

Und das wären die Inhalte bei Statistik:

Vielleicht können ein paar Wirtschaftsinformatik-Studenten ihre Meinung dazu abgeben, wie schwer die Themen tatsächlich sind.

Es handelt sich hierbei um eine Hochschule.

P.S.: Das Mathematik/Statistik-Modul hat 11 CP und wird im 1. & 2. Semester behandelt.

Bild zum Beitrag
Lernen, Studium, Mathematik, Technik, Karriere, Informatik, Wirtschaftsinformatik, Ausbildung und Studium, Wirtschaft und Finanzen

Meistgelesene Beiträge zum Thema Informatik