Java – die neusten Beiträge

Wie kann ich bei spigot prüfen ob ein bestimmter Spieler gerade auf dem selben Server online ist?

Hallo,

ich hatte neulich mal wieder Lust ein Plugin zu schreiben und dachte mir, ich könnte doch mal einen Command einfügen, mit dem ma n den onlinestatus auf meinem Server abfragen kann. Leider bin ich wohl etwas raus gekommen. Folgendes habe ich programmiert

        if(cmd.getName().equalsIgnoreCase("team")) {
        if (args.length == 0){
            p.getServer().getPlayer("Spielername");
            if(p != null){
                p.sendMessage("Spieler: online");
                return true;
            } else {
                p.sendMessage("Spieler: offline");
                return true;
            }
            }
            }

Ja, das ist etwas unordentlich weil ich das etwas aus dem Kontext gerissen habe, aber das wesentliche sollte man erkennen können ;) Ich weiß, dass ich damit prüfe, ob der Spieler, der den Command ausführt online ist und nicht der Spieler den ich hinten angegeben habe, allerdings ist mein Problem eher, dass ich nicht weiß, ob dieser Code üerhaupt prüft, ob der Spieler auf dem Server ist, als viel mehr ob der Spieler in der Datenbank von Mojang eingespeichert ist, sprich einen Premium-Account besitzt. (Wie gesagt, ist lange her, dass ich mich mal mit bukkit / spigot befasst habe)

Wenn mir jemand sagen könnte, ob der Code überhaupt das tut, was ich will wäre das bereits eine große Hilfe. Wenn man mir direkt noch einen Tipp gibt, wie ich meinen Code "richtig" mache wäre das wirklich der Hammer :)

Vielen Dank

Server, online, programmieren, Java, selber, Spieler, Bukkit, Spigot

Java Taschenrechner (Division und Graphische Oberfläsche?

Hallo Community, ich habe ein paar Fragen zu meinem Java Taschenrechner. Am Anfang möchte ich noch sagen das ich erst neu in Java bin und bitte keine besserrichen und herablassenden Antworten zu meinem Taschenrechner möchte.

Hier einmal mein Taschenrechner:

import java.util.Scanner; //Wichtig!

public class Taschenrechner {

    public static void main (String [] args) {
    
        System.out.println("Das hier ist ein Taschenrechner!");
        System.out.println("Bitte definiere die Variablen: a+b c-d e*f g/h");
        
    Scanner sc = new Scanner(System.in);
        double a = sc.nextInt();
            System.out.println("Variable a = " +a); // Anzeige für alle eingegebenen Variablen
        double b = sc.nextInt();
            System.out.println("Variable b = " +b);
        double c = sc.nextInt();
            System.out.println("Variable c = " +c);
        double d = sc.nextInt();
            System.out.println("Variable d = " +d);
        double e = sc.nextInt();
            System.out.println("Variable e = " +e);
        double f = sc.nextInt();
            System.out.println("Variable f = " +f);
        double g = sc.nextInt();    
            System.out.println("Variable g = " +g);
        double h = sc.nextInt();
            System.out.println("Variable h = " +h);
            
            
// Ab hier die Rechenopperrationen      
    double z = a + b; //Addition
    double y = c - d; //Subtraktion
    double x = e * f; //Multiplikation
                      //Division befindet sich weiter unten in der if Schleife
    
    
    
//Ab hier die Ausgabe der Ergebnise 
    System.out.println("Das Ergebnis der Addition lautet= " + z);
    System.out.println("Das Ergebnis der Subtraktion lautet= " + y);
    System.out.println("Das Ergebnis der Multiplikation lautet= " + x);
    if (h == 0) {
        System.err.println("Division durch 0 ist nicht möglich!");
    }
    else {
        double w = g / h; System.out.println("Das Ergebnis der Division lautet= " +w);
    }
    
    
    
    
    
    }
    
}
  1. Wie kann ich meine Eingabe(input) optimieren?
  2. Wieso bekomme ich bei 50/100 den Wert 0? Ich habe den Datentyp als Double deklariert um genau das nicht zu bekommen. Wo liegt mein Fehler?
  3. Wie würde das später mit einer Graphischen Oberfläsche aussehen?

PS.: Ich möchte nicht einfach irgend einen Code kopieren sondern auch verstehen was er macht also bitte mit erklärung. Das ganze Programm dient nur zur Übung um meine Java Kenntnisse zu erweitern.

Danke! :)

programmieren, Java

Wie programmiere ich "Schiffe versenken" in Java?

Ich möchte gerne Schiffe versenken in Java programmieren und komme gerade nicht weiter...

Hier mein Beispiel-code:

import java.util.*;
public class schiffeversenkken {
  
  public static void main(String[] args) {
    Scanner scan = new Scanner (System.in); 
    
    // Hilfsvariablen
    int x = 0 ;
    int y = 0 ;
    int i = 0 ;
    int j = 0 ;
    int s1 = 0 ;
    int s2 = 0 ;
    int s3 = 0 ;
    
    //Spielfeld
    int [][] feld = new int [10][10] ;
    
    // Ausgabe Spielfeld
    
    for(i = 0; i < feld.length; i++){
      for(j = 0; j < feld.length; j++){
        System.out.print(" [ " + feld[i][j] + " ]" + "\t" ) ;
      }
      System.out.println();
    }
    
    // Schiffe platzieren 
    for (s1=0;s1<3 ;s1++ ) {
      System.out.println("x-Koordinate des Schiffes: ");
      x = scan.nextInt() ;
      System.out.println("y-Koordinate des Schiffes: ");
      y = scan.nextInt() ;
      feld [x][y] = 1 ;
    } // end of for
    
    System.out.println("erstes Schiff platziert!");
    System.out.println(" ");
    
    for (s2=0;s2<3 ;s2++ ) {
      System.out.println("x-Koordinate des Schiffes: ");
      x = scan.nextInt() ;
      System.out.println("y-Koordinate des Schiffes: ");
      y = scan.nextInt() ;
      feld [x][y] = 1 ;
    } // end of for
    
    x = 0 ;
    y = 0 ;
    System.out.println("zweites Schiff platziert!");
    System.out.println(" ");
    
    for (s3=0;s3<3 ;s3++ ) {
      System.out.println("x-Koordinate des Schiffes: ");
      x = scan.nextInt() ;
      System.out.println("y-Koordinate des Schiffes: ");
      y = scan.nextInt() ;
      feld [x][y] = 1 ;
    } // end of for
    
    x = 0 ;
    y = 0 ;
    System.out.println("drittes Schiff platziert!");
    System.out.println(" ");
    
    // neues Spielfeld ausgeben
    for(i = 0; i < feld.length; i++){
      for(j = 0; j <feld.length; j++){
        System.out.print("[" + feld[i][j] + "]" + "\t");     
      }
      System.out.println();
      
      
    } // end of main
    
  } // end of class schiffeversenkken
}

Meine Probleme sind jetzt, dass die Schiffe, die ich platziere sehe (Position durch "1" erkennbar, leere Felder gekennzeichnet durch "0" ). Diese möchte ich jedoch verbergen. Ich hab schon drüber nachgedacht es so zu lösen:

Ich vergleiche [x] [y] mit dem Wert "1". Trifft dies zu, lasse ich per System.out.print "feld [x][y] ausgeben (sorry ich kann an dieser Stelle leider keinen Quellcode einfügen :/ )

Das funktioniert leider nicht so, wie ich es mir vorgestellt hab :D

Eine weitere Möglichkeit wäre auch, die Schiffe per Zufall erstellen zu lassen, jedoch weiß ich da auch nicht so genau wie ich das anstellen soll.

Es wäre vermutlich auch mehr als praktisch sämtliche Aktionen in Methoden zu packen, was ich bis jetzt aber noch nicht gemacht habe, da ich relativ unvorbereitet an dieses Pogramm herangetreten bin...

Ich freue mich über schnelle Antworten :)

Schiff, programmieren, Java, get, Array, versenden, Schiffe versenken, Set

Ich muss diesen selbst programmierten Code (Bisektionsverfahren) rekursiv darstellen, jedoch tue ich mir da schwer. Kann mir jemand zur Hand gehen?

public class Bisektion {

public static void main(String[] args) {

    double Nst = bisektion(-10, 10, 0.01);
    System.out.println("Ermittelte Nullstelle: " + Nst);
    System.out.println("Funktionswert an dieser Stelle: " + fkt1(Nst));
    System.out.println();
    double Nst2 = bisektion(-1000, 1000, 0.01);
    System.out.println("Ermittelte Nullstelle: " + Nst2);
    System.out.println("Funktionswert an dieser Stelle: " + fkt2(Nst2));

}

// Test Funktionen
public static double fkt1(double x) {

    double fx;
    //fx = x * x * x - 24 * x * x + 59 * x + 420;
    fx = x + 5;
    return fx;
}

public static double fkt2(double x) {

    double fx2;
    fx2 = -1/Math.exp(x) + 1e20;

    return fx2;
}

public static double bisektion(double lower, double upper, double epsilon) {

    double mid = lower;
    double width = upper - lower; //20
    // Intervall
    while (width > epsilon) { //20 > 0.1

        mid = (lower + upper) / 2;//0   //-5
        if (fkt1(lower) * fkt1(mid) <= 0) { // if root is in [lower, mid]    //-5 * 0
            upper = mid;                    // move upper left               //upper = 0
        } else {                            // else root is in (mid, upper]
            lower = mid;                    // move lower right
        }
        width = upper - lower;                                               //width = 10
        System.out.println("root = " + mid );
    }
    return mid;
}

} // f(lower)<0 und f(upper)>0 // f besitzt nullstelle im Intervall [lower,upper] // middle // entweder lower oder upper durch ein kriterium mit middle ersetzen // stoppen wenn funktionswert näherungsweise 0 ist // ==> betrag kleiner als vorgegebene zahl epsilon

programmieren, Java

Meistgelesene Beiträge zum Thema Java