Programmieren – die neusten Beiträge

Java Arrays richtig vergleichen?

Ich möchte in meinem Lotto-Programm ein Spieler-Tipp-Array mit einem Lotto-Wahl-Array vergleichen. Dazu habe ich mal zum Testen diesen Code erstellt.

Hier der Code zum Kopieren:

String[] LottoZahlen = new String[6];
String[] SpielerZahlen = new String[6];

LottoZahlen[0] = Integer.toString(12);
LottoZahlen[1] = Integer.toString(14);
LottoZahlen[2] = Integer.toString(7);
LottoZahlen[3] = Integer.toString(18);
LottoZahlen[4] = Integer.toString(5);
LottoZahlen[5] = Integer.toString(49);

SpielerZahlen[0] = Integer.toString(12);
SpielerZahlen[1] = Integer.toString(7);
SpielerZahlen[2] = Integer.toString(5);
SpielerZahlen[3] = Integer.toString(18);
SpielerZahlen[4] = Integer.toString(13);
SpielerZahlen[5] = Integer.toString(49);

int gewinn;
gewinn = 0;

for (int i = 0; i < 6; i++) {
  for (int ao = 0; i < 6; i++) {
    if (LottoZahlen[i].equals(SpielerZahlen[ao])) {
      gewinn++;
    }
  }
}

// das ist dann halt die Ausgabe...
switch (gewinn) {
  case 1:
    System.out.println("1er:  Der 5te Schein hat einen Lotto 1er erreicht...");
    break;
  case 2:
    System.out.println("2er:  Der 5te Schein hat es fast in den Gewinnpot geschafft!");
    break;
  case 3:
    System.out.println("$$$  GLÜCKWUNSCH! Der 5te Schein hat einen Lotto 3er erzielt!");
    break;
  case 4:
    System.out.println("$$$$  SUPER! Der 5te Schein hat einen Lotto 4er erzielt!");
    break;
  case 5:
    System.out.println("$$$$$ WIIILD! Der 5te Schein hat einen Lotto 5er erzielt!");
    break;
  case 6:
    System.out.println("$$$$$$ JACKPOT!!! Der 5te Schein hat einen Lotto 6er erzielt!");
    break;
  default:
    System.out.println("Leider Niete... Der 5te Schein hat keinen Gewinn erzielt!");
    break;
}

Es sollte eigentlich in der Konsole ausgegeben werden, dass ich einen Lotto-5er gewonnen habe aber es kommt nur ein Einer heraus.

Kann mir jemand helfen, eine Möglichkeit zu finden, alle Stellen des ersten Arrays mit allen Stellen des zweiten Arrays zu vergleichen?

Bild zum Beitrag
Computer, programmieren, Java, Array, Spiele und Gaming

Java auf Button-Eingabe warten lassen?

In meinem Java-Programm wird an einer Stelle ein neuer JDialog erstellt und ich möchte, dass die Klasse, über die den Dialog aufgerufen wird, solange wartet, bis in dem Dialog ein Button angeklickt wird.

Methode der Klasse Spiel:

public boolean handeln(Spieler aktuellerSpieler, Spieler Partner) {
  if (aktuellerSpieler == Partner) {
    JOptionPane.showMessageDialog(Spiel.this, "Sie können nicht mit sich selber handeln!", "FEHLER", JOptionPane.WARNING_MESSAGE);
    return false;
  }

  setVisible(false);
  Handel dialog = new Handel(aktuellerSpieler, Partner, Spiel.this);

  // Warte auf Button Eingabe in dialog
  return true;
}

Code der Dialog-Klasse:

public Handel(Spieler player1, Spieler player2, Spiel Instanz) {
  setVisible(true);

  setBounds(100, 100, 1030, 471);
  getContentPane().setLayout(new BorderLayout());
  contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
  getContentPane().add(contentPanel, BorderLayout.CENTER);
  contentPanel.setLayout(null);

  {
    JPanel buttonPane = new JPanel();
    buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
    getContentPane().add(buttonPane, BorderLayout.SOUTH);

    {
      JButton okButton = new JButton("BESTÄTIGEN!");
      buttonPane.add(okButton);
      getRootPane().setDefaultButton(okButton);
    }
  
    {
      JButton cancelButton = new JButton("Exit");
      buttonPane.add(cancelButton);
      cancelButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Handel.this.dispose();
          Instanz.setVisible(true);

          // Auf diesen Button soll gewartet werden.
        }
      });
    }
  }
}
Computer, programmieren, Java, Informatik

Wie kann ich in einem dir alle Bilder einlesen, Java?

Hier mein Code:

import java.awt.Component;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Read extends Component {

    public static void main(String[] foo) {
        new Read();
    }

    public void printPixelARGB(int pixel, int i, int j) {
        int alpha = (pixel >> 24) & 0xff;
        int red = (pixel >> 16) & 0xff;
        int green = (pixel >> 8) & 0xff;
        int blue = (pixel) & 0xff;
        System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
        int x = ((alpha-(765-red-green-blue)/3)<<24) + (red<<16) + (green<<8) + blue;
        double y = x < 0 ? (1.0/(x))/-1 : x > 0 ? 1.0/x : 0;
        System.out.println(y);
    }

    private void marchThroughImage(BufferedImage image) {
        int w = image.getWidth();
        int h = image.getHeight();
        System.out.println("width, height: " + w + ", " + h);

        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                System.out.println("x,y: " + j + ", " + i);
                int pixel = image.getRGB(j, i);
                printPixelARGB(pixel, i, j);
                System.out.println("");
            }
        }
    }

    public Read() {
        try {
            // get the BufferedImage, using the ImageIO class
            BufferedImage image =
                    ImageIO.read(this.getClass().getResource("3.png"));
            marchThroughImage(image);
        } catch (IOException e) {
            System.err.println(e.getMessage());
        }
    }
} 

Meine Frage... Bei der Zeile mit "3.png" soll stehen, dass alle png Files einer dir z.b. C:\Users\xy\pngdir eingelesen werden... Wie macht man das?

LG

PC, Computer, Technik, programmieren, Java, Expertenthemen, Informatik, Technologie, Expertenfragen, Programmcode

WLAN Stick tut nicht das was es eigentlich soll?

Ich hoffe hier findet sich jemand der mir helfen kann. Ich versuche es so gut wie möglich zu beschrieben.

Ich habe mir ein WLAN Stick mit einem Chipsatz Realtek 8811CU gekauft. Ich habe es für ein Linux Receiver gekauft welches kein WLAN hat und man dafür ein WLAN Stick mit dem Chipsatz benötigt.

Eigentlich sollte beim anstecken des Stick im Box unter Wifi-Einstellungen angezeigt werden, allerdings wird der WLAN Stick als ganz normaler USB Datenträger erkannt. Das sei nicht normal sagten Nutzer dieser Box in anderen Foren. Die konnten mir aber nicht weiterhelfen.

Als ich den WLAN Stick zum aller ersten mal an meinem Laptop angeschlossen hatte, wurde es auch als ganz normaler USB-Stick erkannt. Ich dachte mir "Häh ich habe doch kein USB angeschlossen" es öffnete sich ganz normal der USB und ein Ordner, wo ich den Treiber oder so für Windows oder Mac installieren konnte. Erst nach der Installation wurde es beim anschließen nicht mehr als USB sondern als WLAN Stick erkannt und ich konnte das Internet verwenden.
Es gibt ja manche WLAN Sticks die mit CD, und andere die ohne CD ankommen, meine war ohne CD und vielleicht deshalb gibt sich der WLAN Stick am Anfang als USB aus damit man die Dateien installieren kann und erst danach switched es zu einem WLAN Stick.
Das ist aber mein Problem.
Ich nutze den Stick nicht für Windows oder Mac sondern für ein Linux Receiver welches wie gesagt den Chipset auch unterstützt.

Wenn man es an dem Box anschließt und unter Wifi-Einstellungen geht, muss es dort als WLAN Stick erkennt werden, was es leider nicht tut, stattdessen wird es als USB Datenträger erkannt.

Wie kann ich den WLAN Stick so einstellen, dass es diese USB Teil überspringt und direkt als WLAN Stick angezeigt wird, so wie es andere Sticks die mit CD geliefert werden mit dem gleichen Chipsatz auch haben? Bei den Sticks mit CD, dient der WLAN Stick nicht zuerst als USB sondern direkt als WLAN Gerät. Genau das möchte ich mit meinem auch haben! Ich hoffe Ihr wisst was ich meine.
Muss ich mein Stick dazu irgendwie formatieren? Funktionieren tut es ja auf jedenfall, es liegt nur daran das es ZUERST als USB Stick dient damit man die Programm installieren kann und erst DANACH gibt es sich als ein Wifi Stick an.

Bei meinem Linux Receiver muss der erste teil aber übersprungen werden. Ich hoffe Ihr wisst was ich meine und könnt mir helfen.

PC, Computer, Windows, Technik, Linux, programmieren, Windows 10, WLAN-Stick

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

Meistgelesene Beiträge zum Thema Programmieren