Programmieren – die neusten Beiträge

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

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, Likes

Seltsamer Codierung?

Könnt ihr mir sagen was dieser Code heißen soll und könnt ihr ihn für mich lesen? Ich danke euch schon mal in voraus hier der Code.

1000) {
    r = r.substring(0, r.length - 1);
}
return r;
}());
}
var ftDomain = (window == top) ? "" : (function() {
    var d = document.referrer,
        h = (d) ? d.match("(?::q/q/)+([qw-]+(q.[qw-]+)+)(q/)?".replace(/q/g, decodeURIComponent("%" + "5C")))[1] : "";
    return (h && h != location.host) ? "&ft_ifb=1&ft_domain=" + encodeURIComponent(h) : "";
}());
var ftV_4678289 = {
        pID: "4678289",
        width: "300",
        height: "600",
        params: {
            ftx: window.ftX,
            fty: window.ftY,
            ftadz: window.ftZ,
            ftscw: window.ftContent,
            ft_custom: window.ftCustom,
            ft_id: window.ftID || "",
            ft_idEnabled: window.ftIDEnabled || "",
            ftOBA: window.ftOBA,
            ft_domain: ((ftDomain || "")
                .match(RegExp("&ft_domain=([^&$]+)", "i")) || ["", ""])[1],
            ft_ifb: ((ftDomain || "")
                .match(RegExp("&ft_ifb=([^&$]+)", "i")) || ["", ""])[1],
            ft_agentEnv: window.mraid || window.ormma ? "1" : "0",
            ft_referrer: encodeURIComponent(window.ft_referrer),
            cachebuster: window.ftRandom
        },
        winVars: {
            ftClick_4678289: window.ftClick_4678289,
            ftExpTrack_4678289: window.ftExpTrack_4678289,
            ft300x600_OOBclickTrack: window.ft300x600_OOBclickTrack
        },
        DTimeout: 1E3,
        GTimeout: 1E3
    },
    ◇ftPProc = function(d) {
        var c = this;
        d = JSON.parse(JSON.stringify(d));
        var☆ f = [],
            l = function(a, b) {
                b = "undefined" === typeof b || isNaN(b) ? 1 : parseInt(b, 10);
                a = a || "";
                for (var e = 0 <= b ? b : 0; e--;) a = encodeURIComponent(a);
                return

LÖSE DEN CODE X a
}, h = function(a) {
        a = a.constructor == Array ? a : [];
        for (var b = 0; b

Dieser Code heißt anscheinend Code X oder was auch immer. Danke schon mal in voraus.

AnonymousX63

PC, Internet, IT, programmieren, JavaScript, Codierung, Webdesign

Bei einer Abfrage ob etwas null ist NullPointerException?

Hey ho Leude,

Ich hab ein kleines Problem bei meinem Spigot Plugin:

if(config.getString("messages.Join").equals(null)) {	
}

Diese if-Abfrage ist laut diesem Fehler Log ein Auslöser für eine NullPointerException:

[17:30:48 ERROR]: Error occurred while enabling JoinMessage v0.1 (Is it up to date?)
java.lang.NullPointerException: null
        at de.Yuno.JM.Main.onEnable(Main.java:26) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:381) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:330) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:752) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.Bukkit.reload(Bukkit.java:525) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]

Ich verstehe aber nicht wieso. Ich möchte doch Abfragen ob dieser Eintrag in der config nicht vorhanden ist sprich null um ihn dann einen Wert zuteilen zu können

Wenn das nicht geht wie kann ich das sonst machen?

programmieren, Java, Minecraft Server

Meistgelesene Beiträge zum Thema Programmieren