Java – die besten Beiträge

Java ArrayList BUG?

Ich habe eine Klasse "AndererTest", "xyPosition" und eine Klasse "Testerklasse".In der Klasse "AndererTest" wird eine ArrayList namens "abzufragendeKoordinaten" erstellt und außerdem auch ein mehrdimensionales Array "stringarray", welches Strings speichert. Ich möchte die Inhalte des "stringarray" ausgeben, aber in zufälliger Reihenfolge. Voher habe ich in der Klasse "TesterKlasse" - welche quasi hier die Main - Klasse mit der main methode sein soll - strings dem "stringarray" zugeordnet:

Klasse TesterKlasse:

Ausgegeben soll das "stringarray" mit der Methode arrayDurchlaufen(). Ausgegeben wird aber immer nur:

anstatt z.B.:

stringarray[2] [0] = f;
stringarray[1] [1] = "d";
stringarray[0] [2] = "b";
stringarray[2] [2] = "h";
//...

Hier ist der Code zur kritischen Klasse "AndererTest":

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;

public class AndererTest {
static Random random = new Random();
    static xyPosition nullnull = new xyPosition(0,0);
    static xyPosition nulleins = new xyPosition(0,1);
    static xyPosition nullzwei = new xyPosition(0,2);
    static xyPosition einsnull = new xyPosition(1,0);
    static xyPosition einseins = new xyPosition(1, 1);
    static xyPosition einszwei = new xyPosition(1, 2);
    static xyPosition zweinull = new xyPosition(2, 0);
    static xyPosition zweieins = new xyPosition(2, 1);
    static xyPosition zweizwei = new xyPosition(2, 2);
    static ArrayList<xyPosition> abzufragendeKoordinaten = new ArrayList<>(Arrays.asList( nullnull, nulleins, nullzwei, einsnull, einseins, einszwei, zweinull, zweieins, zweizwei));

static String[] [] stringarray = new String[3] [3];
static int zufälligeMöglicheyPosition;
static int zufälligeMöglichexPosition;

public int getZufälligeMöglicheyPosition() {
    return zufälligeMöglicheyPosition;
}

public int getZufälligeMöglichexPosition() {
    return zufälligeMöglichexPosition;
}


public static void durchlaufeArray() {
    for (int i = 0; i < 9; i++) {
    int grenzeminuseins = abzufragendeKoordinaten.size() - 1;
   int zufälligerindex = random.nextInt(abzufragendeKoordinaten.size() - 1) + 0;

zufälligeMöglicheyPosition = abzufragendeKoordinaten.get(zufälligerindex).gety();
    
zufälligeMöglichexPosition = abzufragendeKoordinaten.get(zufälligerindex).getx();
abzufragendeKoordinaten.remove(zufälligerindex);

System.out.println("stringarray[" + zufälligeMöglicheyPosition + "] [" + zufälligeMöglichexPosition + "] = " + stringarray[zufälligeMöglicheyPosition] [zufälligeMöglichexPosition]);
 
}
}
}

Der Code zur Klasse xyPosition ist einfach und hier liegt der Fehler bestimmt nicht drin:

public class xyPosition {

static int x;
static int y;
public static Object xyPosition;
    
public xyPosition(int pX, int pY) {
x = pX;
y = pY;
    }

public int getx() { return x; }
public int gety() { return y; }
}

Bilder habe ich hier nur wegen der "nicht mehr genug Zeichen" - Funktion verw.
Biite helft mir, ich sitze schon seit 2 Tagen vor diesem Bug🤬

Bild zum Beitrag
Software, programmieren, Java, Informatik, Programmiersprache, Softwareentwicklung

Java-Projekt: Wie lasse ich den Inhalt der Datenbank in einer Tabelle anzeigen?

Ich habe jetzt über mehrere Wege versucht, den Inhalt der Datenbank in der Tabelle anzeigen zu lassen und bin immer wieder auf mehr Probleme gestoßen. Kann mir jemand helfen?

Ich weiß nicht, wie ich das angehen soll und ob ich den Anfang überhaupt richtig habe.

Ich kopiere den Code aus der Datenbankklasse mal rein.

package kontaktVerwaltung;

import java.awt.Checkbox;
import java.awt.GraphicsConfiguration;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import com.mysql.cj.protocol.Resultset;

class Db {
  private kontaktVerwaltungClass cw;

  public Db(kontaktVerwaltungClass cw) {
    this.cw = cw;
  }

  public void speichern() {
    String url = "jdbc:mysql://localhost:3306/verwaltung";
    String user = "root";
    String pass = "";

    try {
      Connection con = DriverManager.getConnection(url, user, pass);
      String sql = "insert into contact(name, adress, postcode, website) values(?,?,?,?)";
      PreparedStatement pstmt = con.prepareStatement(sql);
      pstmt.setString(1, cw.tfName.getText());
      pstmt.setString(2, cw.tfAdress.getText());
      pstmt.setString(3, cw.tfPostcode.getText());
      pstmt.setString(4, cw.tfWebsite.getText());
      pstmt.execute();

      con.close();
    }
    catch (SQLException e) {
      JOptionPane.showMessageDialog(null, e.getMessage());
    }
  }

  public void show() {
    String url = "jdbc:mysql://localhost:3306/verwaltung";
    String user = "root";
    String pass = "";

    try {
      Connection con = DriverManager.getConnection(url, user, pass);
      String query1 = "SELECT * FROM contact";
      Statement st = con.createStatement();
      ResultSet rs = st.executeQuery(query1);
      kontaktVerwaltungClass kw;

      while(((ResultSet) rs).next()) {
        kw = new kontaktVerwaltungClass();
        kw.tbShow.add(rs);
      }

      con.close();
    }
    catch (SQLException e) {
      JOptionPane.showMessageDialog(null, e.getMessage());
    }
  }
}
Java, Datenbank, MySQL, Java Swing

H IL F E! Informatik Bug🤯!?

Java

habe eine klasse PriorityQueue. Diese speichert Objekte der Klasse QueueInhalt in einem Array namens queueinhalte. Die QueueInhalte - Objekte wiederrum speichern jeweils einen Verweis auf ein ein Objekt der Klasse ContentTypePerson.
Der Code der Klasse QueueInhalt ist kurz:

Das hier ist die add - Methode aus der PriorityQueue, jedenfalls der Teil für den Fall, wenn die Priorität des ContentTypePerson - Objektes (, wleches ja widerrum in einem QueueInhalt - Objekt gespeichert ist,) größer als Die des im Array am vordersten gelegenen Elements ist.

Es gibt auch noch eine Methode in der Klasse PriorityQueue, um den ArrayInhalt und so auszugeben (ich glaube, da liegt der folgende Fehler aber nicht):

Jetzt kommts: Ich habe ein Array der Größe 2 erstellt, ein Objekt ContentTypePerson mit dem Namen "A" erstellt und ihm beim Aufrufen der add Methode die Priorität 3 gegeben.
Beim Aufrufen der Methode gibInhalteDesArraysAus() kommt dann ensprechend:

Dann adde ich noch ein ContentTypePersonPerson - Objekt namens "B", diesmal mit der Priorität 4, damit der oben gezeigte Teil der add - Methode ausgeführt wird.
Doch dann wird ausgegegeben:

anstatt:
Inhalte: QueueInhalt@d54b68 (Name: B Priorität: 44) | QueueInhalt @17e26a8 (Name: A Priorität: 43)

HILFE! Wo ist der Bug? Ich sitze schon seit zwei Stunden hier fest! Sorry für so viele Bilder Code, ich bin mir nicht sicher in welchem Codeteil der Fehler liegen könnte

Bild zum Beitrag
Software, Schule, programmieren, Java, Informatik, Programmiersprache, Softwareentwicklung

Meistgelesene Beiträge zum Thema Java