Java – die neusten Beiträge

Spigot/Java ein value aus einer HachMap löschen?

Hallo ich versuche mal den code zusammenzufassen:

HashMaps:

public static HashMap<UUID, Chunk> map = new HashMap();
public static HashMap<UUID, Chunk> mapCreator = new HashMap();

Spieler:

Player player = (Player) sender;
UUID playerUUID = player.getUniqueId();

Zum erstellen der Stadt:

if (args[0].equalsIgnoreCase("create")) {
    if (!(Main.mapCreator.containsKey(playerBOSS)) && !(Main.map.containsKey(playerBOSS))) {
        if (args.length == 1) {
            Chunk town = player.getLocation().getChunk();
            Main.mapCreator.put(playerBOSS, town);
            Main.map.put(playerBOSS, town);
            player.sendMessage("Du hast eine Stadt erstellt!");
        }

dann kann man jemanden einladen und dann kann der mit /town accept annehmen

und wird mit:

Main.map.put(playerUUID, town);

hinzugefügt.

Und jetzt will ich das ich die Stadt löschen kann und nur der der auch die stadt erstellt hat, also jemand der in der map mapCreator ist und das value von dem key (seine UUID) gleich dem Chunk entspricht in dessen value der ist also sowas wie:

if (Main.map.get(playerUUID) == town) das habe ich auch so aufgeschrieben

so das er halt die town "meint" in dessen map/value der ist.

Ich bin mir nicht sicher ob das klappt aber jetzt kommt erst mein richtiges problem...

Wenn mehrere in meiner town sind gibt es ja mehrere keys zu einem value und die muss ich ja irgendwie auflisten können um sie alle auf einmal zu löschen, weil dann das value nicht mehr exestert ODER gibt es eine möglichkeit ein value aus einer hashmap zu löschen? im internett habe ich sowas wie: for (Map.Entry<UUID, Chunk> entry : Main.map.entrySet()) {
    UUID k = entry.getKey();
    Chunk v = entry.getValue();
    System.out.println("Key: " + k + ", Value: " + v);
    Main.map.remove(k);
}
Main.map.forEach((k, v) -> {
    System.out.println("Key: " + k + ", Value: " + v);
    Main.map.remove(k);
});

gefunden aber da kamen fehlercodes und es hat ncht wirklich funktioniert...

Kann mir jemand sagen wie ich den delete teil machen kann?

Computer, Technik, programmieren, Java, Minecraft, Technologie, Spiele und Gaming

Könnt ihr mir bei einem Javaprojekt helfen?

Ich habe die Aufgabe bekommen den Ordnerinhalt über eine Funktion dateienLaden() über eine DefaultListModel<Datei> zurückzugeben. Ich komme allerdings nicht weiter, ich bin noch am Anfang der Ausbildung zum Fachinformatiker.

Es zeigt zwar die Inhalte an, aber ich habe das nicht in die Funktion datenLaden() gepackt und auch ohne DefaultListModel gearbeitet. Ich denke für die weiteren Aufgaben ist das nicht fördernd.

Kann mir einer helfen?

Ich bin bisher soweit:

package bilderverwaltung;

import java.awt.EventQueue;

import java.io.File;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class BilderVerwaltungMainClass extends JFrame {

    private JPanel contentPane;
    
    public static File ordner = new File("test");
    
    boolean probe = ordner.exists();
    
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    BilderVerwaltungMainClass frame = new BilderVerwaltungMainClass();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    public BilderVerwaltungMainClass() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 644, 432);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        JList listDateienListung = new JList();
        listDateienListung.setBounds(413, 111, 207, 274);
        contentPane.add(listDateienListung);
        System.out.println();
    }
    
    public void dateiLesen() {
        File[] files = ordner.listFiles();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                System.out.print(files[i].getAbsolutePath());
                if (files[i].isDirectory()) {
                    System.out.print(" (Ordner)\n");
                } else {
                    System.out.print(" (Datei)\n");
                }
            }
        }
    }
}
Computer, Java

wie läuft Programmcode ab? Reinfolge?

Allllllso ich verstehe nicht wie code abläuft. Normalerweise läuft der Code von oben nach unten ab. Ja aberrrrr Beispsiel:

In einem Spiel hat man Blöcke. Ein Quadrat mit 10 Blöcken ist vor mir.

Wichtig: Von jedem dieser 10 Blöcke geht ein Befehl aus. Also mein Programm sagt das alles Code was ich hier rein tue, von jedem dieser Blöcke aus geht:

//ich setzte Variable "start" auf 1

Wenn "start" auf 1 dann

setzte "BlockNummer" auf (get "Blocknummer" + 1)

//"Blocknummer" sollte doch jetzt auf 10 sein weil ich 10 Blöcke habe.

Wenn "BlockNummer" kleiner oder gleich ist als "5"

ersetzte dich selber mit Block "Erde"

Ungefähr so ist mein Code

Er ersetzt jetzt 5 Blöcke. 5 Blöcke sind jetzt Erde und die anderen 5 haben sich nicht geändert.

Macht für mich keinen Sinn. Sollte "Blocknummer" nicht auf 10 sein? Also sollte eigentlich Garnichts passieren.

Und wenn ich das hier mache:

//ich setzte Variable "start" auf 1

Wenn "start" auf 1 dann

setzte "start" auf 0 (<-- Neu)

ersetzte dich selber mit Block "Erde"

Jetzt ersetzt er nur 1 Erdblock. Damit er alles zu Erde ersetzt muss ich sagen, dass er kurz warten soll bis er "start" wieder auf 0 setzt. Wieso ist das so? Theoretisch sollte er alles zu Erde ersetzten.

Das bringt mich durcheinander wie Code abläuft. Vielleicht sollte das auch nicht passieren und meine art "engine" macht das so. Wie läuft code ab?

Computer, Software, Technik, programmieren, Java, Technologie, Spiele und Gaming

[Java] Wie soll ich ein Würfel erstellen?

Hallo Leute,

ich weiß nicht wie ich die Aufgabe lösen soll ? Kann mir jemand Helfen?

---------------------------------------------------

Aufgabe 7: Zeichne die Würfel 

Gehe nun in die Klasse Painting. 

Füge der Klasse vier verschiedene Würfel als Objektvariablen (w1 bis w4) hinzu. 

(Anmerkung für Experten: Hier kann auch gerne mit einem Wuerfel[] - Array gearbeitet werden) 

Diese sollen im Konstruktor der Klasse Painting wie folgt initialisiert werden: 

  • einen Standardwürfel 
  • einen weiteren blauen Würfel, einen grünen Würfel sowie einen schwarzen Würfel - initialisiert mit sinnvollen Werten für xPos, yPos, breite, hoehe, sodass sie am Ende nebeneinander mit einem Mindestabstand von 15px gezeichnet werden können. 

 

Zeichne nun die Würfel mittels folgender Methoden innerhalb von paintComponent(): 

Painting.java

import javax.swing.JPanel;
import java.awt.*;

public class Painting extends JPanel{
	Wuerfel w1 = new Wuerfel();
	Wuerfel w2 = new Wuerfel();
	Wuerfel w3 = new Wuerfel();
	Wuerfel w4 = new Wuerfel();
	

    //ATTRIBUTE (Platz f�r Objektvariablen)
 

    public Painting(Frame f){
    	w1.setxPos(30);
    	w1.setyPos(30);
    	w1.getFarbe();
    	
    	
        //Hier Initialisierung vornehmen
       
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        //BEISPIEL-ZEICHNUNG:
        g.setColor(Color.BLACK);
        g.fillRect(20, 20, 30, 30);
        g.setColor(Color.WHITE);
        g.drawString("1", 30, 40);

    }
}
Schule, programmieren, Java

Wie kann Java auf ein User-Input warten?

Guten Tag,

ich programmiere gerade ein kleines Java-Projekt.

Dort hat bis jetzt auch alles geklappt, doch nun weiß ich nicht mehr weiter.

Ich habe für den Start meines Programms dieses GUI erzeugt:

Wie da ja schon steht, soll der User 'W' drücken, damit das Spiel anfängt. Doch ich weiß nicht, wie ich das programmieren kann. Ich habe schon eine Klasse (KeyHandler) angelegt, die KeyListener implementiert und die ich schon meinem Programm hinzugefügt habe, doch passieren tut dabei nichts.

Ich habe auch schon eine Ahnung warum: Die Variable 'commands.isRunning' wird direkt überprüft (und danach nicht mehr) und deshalb der If-Teil überschprungen. Wie kann jetzt Java auf einen User-Input warten, damit die Variable nicht sofort überprüft wird?

Hier ist meine Draw Klasse:

(commands.isRunning ist gerade noch false, soll aber durch das 'W' true werden. Die Methode, die dadurch aufgerufen werden soll, steht in der Klasse Commands)

public class Draw extends JPanel implements Variables {

    Commands commands = new Commands();
    KeyHandler keyHandler = new KeyHandler();

    Player player = new Player();
    Donut donut = new Donut();

    Draw() {
        this.addKeyListener(keyHandler);
        this.setPreferredSize(new Dimension(SCREEN_WIDTH, SCREEN_HEIGHT));
        this.setBackground(Color.black);
        this.setFocusable(true);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        commands.printStartText(g);
        
        if (commands.isRunning() == true) {

            // Draw Grid
            for (int i = 0; i < SCREEN_HEIGHT / UNIT_SIZE; i++) {
                g.drawLine(i * UNIT_SIZE, 0, i * UNIT_SIZE, SCREEN_HEIGHT);
                g.drawLine(0, i * UNIT_SIZE, SCREEN_HEIGHT, i * UNIT_SIZE);
            }

            // Place Player
            player.placePlayer(g);

            // Place Donut
            donut.placeDonut(g);

            // Place Barrier

            // Place Gadget

            // Set Default Color
            g.setColor(Color.darkGray);

        }
    }
}

Und hier die KeyHandler Klasse:

public class KeyHandler implements KeyListener {

    Commands commands = new Commands();

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void keyPressed(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_W:
            commands.startGame();
            break;

        case KeyEvent.VK_A:

            break;
        case KeyEvent.VK_S:

            break;
        case KeyEvent.VK_D:

            break;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub

    }
}

Auch habe ich schon 'System.in.read' hinter 'commands.printStartText(g);' platziert, doch da wurde dann nur ein weißes Bild angezeigt.

Ich hoffe ihr könnt mir helfen!

Schon mal vielen Dank im voraus.

Bild zum Beitrag
Computer, Technik, programmieren, Java, Informatik, GUI

JavaFX TableView mit Daten aus der Datenbank füllen?

Hey Leute,

ich versuche gerade meine Tabelle mit Daten aus der Datenbank zu füllen aber dabei bekomme ich eine Fehlermeldung. Kann mir jemand dabei helfen?

Users Klasse:

public class Users {
    private int id;
    private String userToken;
    private String firstname;
    private String lastname;
    private String emailAddress;
    private String creationTime;
    private Button deleteButton;

    public Users(int id, String userToken, String firstName, String lastName, String emailAddress, String creationTime) {
        this.id = id;
        this.userToken = userToken;
        this.firstname = firstName;
        this.lastname = lastName;
        this.emailAddress = emailAddress;
        this.creationTime = creationTime;
    }
}

Die Fehlermeldung:

UserController:

public class UserController {

    @FXML
    private TableColumn<Users, Integer> idCol;

    @FXML
    private TableColumn<Users, String> creationTimeCol;

    @FXML
    private TableColumn<Users, String> emailCol;

    @FXML
    private TableColumn<Users, String> firstnameCol;

    @FXML
    private TableColumn<Users, String> lastnameCol;

    @FXML
    private TableColumn<Users, String> deleteCol;

    @FXML
    private TableColumn<Users, String> userTokenCol;

    @FXML
    private TableView<Users> table;

    @FXML
    private TextField textField;

    public void printUser() {
        ObservableList<Users> allUserList = FXCollections.observableArrayList();

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:2020/database", "root", "");
            System.out.println("Connected");
            //PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM usertable");
            ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM usertable");
            while (resultSet.next())  {
                allUserList.add(new Users(Integer.parseInt(resultSet.getString("id")),
                        resultSet.getString("userToken"), resultSet.getString("firstName"),
                        resultSet.getString("lastName"), resultSet.getString("emailAddress"),
                        resultSet.getString("creationTime")));

            }

        } catch (SQLException ignored) {
            ignored.printStackTrace();
        }
        idCol.setCellValueFactory(new PropertyValueFactory<Users, Integer>("id"));
        userTokenCol.setCellValueFactory(new PropertyValueFactory<Users, String>("userToken"));
        firstnameCol.setCellValueFactory(new PropertyValueFactory<Users, String>("firstName"));
        lastnameCol.setCellValueFactory(new PropertyValueFactory<Users, String>("lastName"));
        emailCol.setCellValueFactory(new PropertyValueFactory<Users, String>("emailAddress"));
        creationTimeCol.setCellValueFactory(new PropertyValueFactory<Users, String>("creationTime"));
        table.setItems(allUserList);
        System.out.println("all user got");
    }
}

Bild zum Beitrag
Computer, programmieren, Java, Datenbank, JavaFX, MySQL, GUI

PROCESSING- Layer festlegen und undurchlässige objekte erstellen?

hallo, wir haben in der schule seit kurzen ein paar pogrammier grundlagen mit processing.

das ziel ist es ein kleines spiel selbst zu programmieren.

ich habe mit einem spiel angefangen in dem man einen kleinen character hat (eine png datei) den man nach rechts und links steuern kann und der springen kann.

außerdem habe ich ein paar röhren eingebaut durch die der character hindurchlaufen soll.

hier kommen wir zu meiner ersten Frage: ist es möglich das ich verschiedene laye festlege, also das die röhren über dem character liegen, diesen also verdecken?

und meine zweite frage ist: ich habe ein paar schwebende plattformen erstellt auf die der character hinaufspringen können soll. allerdings fällt dieser momentan noch einfach hindurch. wie bekomme ich diese platformen solide? d.h. das wenn der character darauf landet, soll er darauf stehen bleiben und nicht hindurchfallen.

anbei noch der code, allerdings ziemlich wirr.

gif&gif2 = chaacter

danke schonmal.

PImage[] gif;
PImage [] gif2;
int nof;
int f;    // für die Laufanimation
int k;
PImage platform;
PImage hintergrund;
PImage Rohr;
PImage Rohr2;
int x = 0;
float y = 0;
boolean mover;
boolean movel;
boolean springen;
boolean rohr = false;


float jump;


boolean rechts;








void setup() {
  frameRate(130);
  size(1920, 1080);


  Rohr = loadImage("R.png");
  Rohr2 = loadImage("R2.png");
  platform = loadImage("platform.png");


  nof = 5;  
  gif = new PImage[nof];  
  int i = 0;  
  while (i < nof) { 


    gif[i] = loadImage("pixil-frame-"+i+".png");


    i=i+1;
  }   // laufanimation rechts




  gif2 = new PImage[nof];  
  int g = 0;  
  while (g    < nof) { 


    gif2[g] = loadImage("pixi-frame-"+g+".png");
    g=g+1;
  }   // laufanimation links








  hintergrund = loadImage("hintergrund.png");


  movel = false;
  mover = false;
  rechts = true;


  x = 50;
  y = 880;
  jump = 0;
}


void draw() {
  background(hintergrund);


  rohr = x > 0 && x < 10 && y > 370 && y < 490;


  println (mouseX+","+mouseY);






  image(Rohr, -20, 350, 100, 150);


  image(Rohr2, 1840, 60, 100, 150);
  image (platform, 0, 490);
  image (platform, 1660, 200);


  if (rechts) {


    image(gif[f], x, y, 160, 120);  //anfang laufen


    if (frameCount % 5 == 0)   f = f + 1;
    if (f == nof) f = 0;
  } else {
    image (gif2[k], x, y, 160, 120);


    if (frameCount % 5 == 0)   k = k + 1;
    if (k == nof) k = 0;
  }


  y = min(y+jump, 880);


  jump = jump + .28;








  if (x > 1300) {
    x = -150;
  }


  if (rohr) {
    x = 1300;
  }


  if (mover) {
    x = x+3;
  }
  if (movel) {
    x = x-3;
  }




  if (springen) {
    y = y - 5;
  }
}




void keyPressed() {


  if (key == ' ') {
    jump= -8;
  }


  if (keyCode == RIGHT) {




    mover = true;
    rechts = true;
  }




  if (keyCode == LEFT) {
    movel = true;
    rechts = false;
  }
}


void keyReleased() {
  if (keyCode == RIGHT) {
    mover = false;
  }
  if (keyCode == LEFT) {
    movel = false;
  }




  println (mouseX+","+mouseY);
}


Computer, programmieren, Java, Informatik, Processing, Spiele und Gaming

Kann mir jemand helfen, JavaFX in Eclipse zum Laufen zu bringen?

Hallo,

ich bin mit meinem Java-Buch nun bei JavaFX angelangt und muss nun, um den Code weiterverfolgen zu können, dieses installieren. Doch funktioniert dieses aus irgendeinem Grund bei mir nicht.

Das sind die Schritte, die ich aus einigen Websites und Videos habe und durchgeführt habe:

  1. Ich habe das Eclipse-Plugin "e(fx)clipse" installiert.
  2. Ich habe JavaFX17 installiert und den zip-Ordner extrahiert. (Download Website: https://gluonhq.com/products/javafx/)
  3. Dann habe ich in Eclipse eine User Bibliothek angelegt: Window --> Preferences --> Java --> BuildPath --> User Libraries --> New --> (Name eingeben) --> Add External Jars
  4. Die Dateien in dieser Bibliothek mit denen aus den Videos und Websiten verglichen. Das Ergebnis war, dass alle Dateien dabei sind.
  5. Ein JavaFX-Project in Eclipse erstellt: New --> Other --> JavaFX --> JavaFX Project --> (Namen eingeben) --> finish
  6. User Bibliothek zum Projekt hinzugefügt: Rechtsklick auf Projekt --> BuildPath --> Configure BuildPath --> Add Library in ClassPath --> User Library --> Next --> Bibliothek auswählen --> Finish

Mit dem Erstellen des Projekts wurden automatisch ein Package und eine Klasse erstellt, die voller Fehlermeldungen waren. Bei den Websites und Videos sind diese nach dem Hinzufügen der User Bibliothek verschwunden, doch bei mir sind sie weiterhin vorhanden. So sieht das aus:

Ich hoffe ihr könnt mir helfen.

Vielen Dank schon mal im voraus.

Bild zum Beitrag
Computer, programmieren, Java, Eclipse, JavaFX, Technologie

Wie bekomme ich aus einer Zahlenreihe, einer Arrayreihe innerhalb einer arraylist?

Moin!

Ich bin ein blutiger Anfänger, bzw wieder, weil ich alles vergessen habe.

Ich würde gerne eine Zahlenreihe, innerhalb einer Arraylist (name "vorbereiten"), in Arraylisten innerhalb einer Arraylist machen (name "allelisten").

Kein schöner weg und wahrscheinlich auch sehr ungwöhnlich :)

Ich habe mit biegen und brechen und viel lesen irgendwie grob was hin bekommen, obwohl ich es auch ehrlich gesagt noch nicht ganz verstehe.

Mein Ziel ist es, das aus der Zahlenreihe die schon fest in einer Arraylist ist, 3er blöcke als Arraylist zu machen, die zudem nach größe sortiert werden sollen

Also aus [ 14, 44 ,21 , 77, 49, 1, 66, 9,....]

soll werden:

[ [14, 21 ,44] , [1,49, 77], [9, 66,....]]

Ich habe probiert mit ",remove" das irgendwie hin zu basteln, sodass die ersten 3 zahlen in "vorbereiten" verschwinden, aber ich bekomme das nicht in einen loop gebaut, sodass die Zahlen aber trotzdem in "allelisten" bestehen bleiben.

Zudem weiss ich nicht, was ich anstatt der "10" bei "i<10; i++" einfügen muss, damit die ganze liste einmal durchgenommen wird. Es sind über 1000 zahlen.

Ich wäre sehr froh, wenn mir da jemand helfen könnte.

Vielen dank und bleibt gesund!

package eds;

import java.io.FileNotFoundException;
import java.util.ArrayList;

public class nhnbjbgn {

    public static void main(String[] args) throws FileNotFoundException {
        
        ArrayList<Integer> vorbereiten = new ArrayList<>();
        
        vorbereiten.add(14);
        vorbereiten.add(44);
        vorbereiten.add(21);
        vorbereiten.add(77);
        vorbereiten.add(49);
        vorbereiten.add(1);
        vorbereiten.add(66);
        vorbereiten.add(9);
        vorbereiten.add(99);
        
        
            ArrayList<ArrayList<Integer>> alleListen = new ArrayList<>();
            ArrayList<Integer> tmp;
            
            for(int i=0;i<10;i++){
                tmp=new ArrayList<>();
                if(i==0){
                    tmp.add(vorbereiten.get(0));
                    tmp.add(vorbereiten.get(1));
                    tmp.add(vorbereiten.get(2));
                }
                else{
                    tmp=(ArrayList<Integer>) alleListen.get(i-1).clone();
                    
                }
                alleListen.add(tmp);
            }
            System.out.print(vorbereiten);
            System.out.print(alleListen);
        }     
}

Bild zum Beitrag
Computer, Schule, Programm, programmieren, Java, Eclipse, Informatik

Meistgelesene Beiträge zum Thema Java