JAVA Grundkurs #13 - Enums + Übungsaufgabe [Tutorial]

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 71

  • @Guterzogenbistdunich
    @Guterzogenbistdunich 6 ปีที่แล้ว +3

    Dein Erklärungsstil find ich köstlich! Macht riiiiiiichtig Spaß dir zuzuhören. :D Fühl mich ein wenig zurückversetzt in meine Kindheit.. *hust Löwenzahn hust hust* :D
    Like und Abo dagelassen!

  • @moritzahrens6314
    @moritzahrens6314 7 ปีที่แล้ว +12

    Du hättest doch die einfachere for-Schleife so lassen können und if mit while ersetzen können.

    • @R4MMU5
      @R4MMU5 7 ปีที่แล้ว

      Guter Punkt!

    • @maspofu2538
      @maspofu2538 7 ปีที่แล้ว

      hab ich auch gedacht (min 13:30)

    • @currywurst6267
      @currywurst6267 7 ปีที่แล้ว

      Wer aber auf Performance legt, der sollte den Weg den DeBukkit hier präsentiert hat wählen.

    • @maspofu2538
      @maspofu2538 7 ปีที่แล้ว +1

      Weshalb?

    • @maspofu2538
      @maspofu2538 7 ปีที่แล้ว

      Ist doch das gleiche nur kürzer geschrieben

  • @MrGedget
    @MrGedget 7 ปีที่แล้ว +13

    Sehr schön erklärt! Hätte man nicht auch einfach i-- anstatt i=-1 verwenden können? Das erscheint mir besser, da so die Schleife nicht jedesmal von vorne beginnt.

    • @R4MMU5
      @R4MMU5 7 ปีที่แล้ว +2

      Ja das wäre auch gegangen und wäre auch effizienter.

    • @DeBukkIt
      @DeBukkIt  7 ปีที่แล้ว +5

      TPRammus Verdammt! Alles klar, leider nicht bedacht.

  • @m9owN55r
    @m9owN55r 7 ปีที่แล้ว +1

    Wenn ich von 3.23 (double) 2.47 abziehe ist das Ergebnis laut Java 0.7599999999999998. Woran liegt das? Wenn ich das ganze mit Float als datentyp mache funktioniert es.

    • @DeBukkIt
      @DeBukkIt  7 ปีที่แล้ว +1

      lucky19 Das ist ein ganz übliches Problem mit Fließkommaarithmetik in der Informatik und zwar in den meisten Programmiersprachen, nicht nur in Java. Falls du eine Rechnung machst, für die dieses Ergebnis nicht ausreichend genau ist, benutze die Klasse BigDecimal. Sie erweitert den Speicherplatz für deine Fließkommazahl je nach Bedarf und relativ dynamisch, Double dagegen bleibt in seinen paar (waren es 64?) Bit und da ist auf jeden Fall Schluss.

    • @m9owN55r
      @m9owN55r 7 ปีที่แล้ว

      Ok, danke!

    • @niklas.seyfarth
      @niklas.seyfarth 7 ปีที่แล้ว +1

      Das liegt an der Art und Weise, wie die Kommazahl im Computer abgespeichert wird. (Wikipedia-Eintrag dazu: de.wikipedia.org/wiki/Gleitkommazahl )
      Um Gleichheit zu überprüfen, ist es besser "Math.abs(zahl1 - zahl2) < 1e8" oder so zu verwenden, anstatt mit == zu arbeiten.

    • @niklas.seyfarth
      @niklas.seyfarth 7 ปีที่แล้ว

      Ich hab da nen dummen Fehler gemacht und das Minus vergessen! Es sollte "Math.abs(zahl1 - zahl2) < 1e-8" heißen...

  • @SpoKaPh
    @SpoKaPh 7 ปีที่แล้ว +1

    Darf ich dein "Simple Server Client" in mein Projekt einbinden und anpassen? :)

    • @DeBukkIt
      @DeBukkIt  7 ปีที่แล้ว +1

      SpoKaPh Selbstverständlich, allerdings entsprechend der Lizenz nur mit Attribution meiner Wenigkeit.

    • @SpoKaPh
      @SpoKaPh 7 ปีที่แล้ว

      Okay danke :D

  • @manuelhgn6025
    @manuelhgn6025 5 ปีที่แล้ว

    Hey hoffe es ist nicht zu spät und niemand liest mehr meine Frage: Ist es schlimm, dass unsere Methode getWechselGeld jetzt static ist? Normalerweise sind getter ja nicht statisch.. Gibt es noch eine andere Möglichkeit, das Problem zu lösen, sodass die Methode getWechselGeld nicht static ist?

  • @hermannhehn4320
    @hermannhehn4320 6 ปีที่แล้ว +2

    Also bei diesem Tutorial bin ich völlig abgehängt. Dabei ist das Enum nicht das Thema, sondern eher die LinkedList.
    Wieso kann man hier einfach Value schreiben? for (int i = 0; i >= values().length; i++) { ...
    Auch hier: Muenze M1 = values()[i];

  • @vanessaruth9482
    @vanessaruth9482 3 ปีที่แล้ว

    Ich weiß nicht ob du hier noch Kommentare liest, allerdings ist bei meinem Programm, was ich zu 100% abgeschrieben hab, etwas merkwürdig. Es wirft nämlich das Wechselgeld immer eins zu klein raus (also ich gebe 763 ein und nur 762 werden ausgeworfen). Woran könnte das liegen?

    • @DeBukkIt
      @DeBukkIt  3 ปีที่แล้ว

      Kannst du mir deinen Code einmal schicken?

    • @vanessaruth9482
      @vanessaruth9482 3 ปีที่แล้ว

      @@DeBukkIt hier die Klasse EnumsTest
      import java.util.LinkedList;
      public class EnumsTest {
      public static void main(String[] args) {

      LinkedList wechselgeld = Muenze.getWechselgeld(526);
      for (Muenze m : wechselgeld) {
      System.out.println(m);
      }


      }
      }
      und hier die Klasse Muenze
      import java.util.LinkedList;
      public enum Muenze {

      zweiEuro(200), einEuro(100), fuenfzigCent(50), zwanzigCent(20), zehnCent(10), fuenfCent(5), zweiCent(2), einCent(1);

      private int wert;
      Muenze(int wert) {
      this.wert = wert;
      }

      public int getWert() {
      return wert;
      }

      public static LinkedList getWechselgeld(int wertInCent) {

      LinkedList wechselgeld = new LinkedList();

      for (int i = 0; i < values().length; i++) {
      Muenze aktuelleMuenze = values()[i];

      if(aktuelleMuenze.getWert() < wertInCent) {
      wechselgeld.add(aktuelleMuenze);
      wertInCent = wertInCent - aktuelleMuenze.getWert();
      i--; // hier hab ich beide Möglichkeiten getestet
      }

      }
      return wechselgeld;

      }
      }

    • @klausrolland4121
      @klausrolland4121 3 ปีที่แล้ว

      @@vanessaruth9482 if(aktuelleMuenze.getWert()

  • @JonyXL44
    @JonyXL44 7 ปีที่แล้ว

    Naja letztendlich ist Muenze intern doch eine Klasse und die einzelnen Münzen public static Instanzen die automatisch erzeugt werden ^^
    Ach habe gerade gehört du bist an der Uni - was studierst du genau bzw. wo? :D

    • @R4MMU5
      @R4MMU5 7 ปีที่แล้ว

      Er sagte nur, dass es eine Übungsaufgabe von einer Universität handelt.
      Er hat nicht davon geredet, dass er jetzt gerade an einer Universität ist.

    • @saltedbroccoli2040
      @saltedbroccoli2040 7 ปีที่แล้ว

      Er ist an der uni und studiert chemie und informatik; soviel ich weiss...

    • @DeBukkIt
      @DeBukkIt  7 ปีที่แล้ว +1

      Salted Broccoli Korrekt! Chemie und Informatik - beides sehr interessante Wissenschaften und mindestens einen Bachelor of Science wert.

    • @niklas.seyfarth
      @niklas.seyfarth 7 ปีที่แล้ว

      Chemie wollte ich früher auch studieren, jetzt mache ich nur Informatik. Wie kannst du eigentlich zwei Fächer gleichzeitig studieren? Auf Lehramt? Oder gibt es ein Chemie-Informatik-Mischfach?

    • @JonyXL44
      @JonyXL44 7 ปีที่แล้ว

      Du kannst Chemie sicherlich auch als Nebenfach wählen :)

  • @timokailer6070
    @timokailer6070 5 ปีที่แล้ว

    Sehr hilfreiches Video!!!

  • @Toxic-fj4pd
    @Toxic-fj4pd 7 ปีที่แล้ว

    was macht static ich verstehe es immernoch nicht ?

    • @R4MMU5
      @R4MMU5 7 ปีที่แล้ว +1

      Static heißt, dass es eine statische Methode ist.
      Dadurch kannst du auf die Methode durch *Klassenname.Mehode();* zugreifen.
      Wenn diese Methode nicht statisch wäre, dann könntest du die Methode nur mithilfe eines zuvor erstellten Objektes aufrufen.

    • @Toxic-fj4pd
      @Toxic-fj4pd 7 ปีที่แล้ว

      TPRammus also wenn sie nicht statisch ist dann kann ich nur Klaus.Methode ();
      Klaus ist ein neues Objekt

    • @R4MMU5
      @R4MMU5 7 ปีที่แล้ว

      Ja richtig.

    • @thomi100
      @thomi100 7 ปีที่แล้ว

      Es ist so, dass wenn man statische Methoden ändert, das überall geändert wird, oder?

    • @R4MMU5
      @R4MMU5 7 ปีที่แล้ว

      Definiere dieses "ändern" bitte etwas genauer.

  • @Wawwior
    @Wawwior 4 ปีที่แล้ว +6

    Sooo viel besser als das von "The Morpheus Tutorials".... und du hast weniger likes : |

  • @anna040598
    @anna040598 4 ปีที่แล้ว

    Super, danke :)

  • @Gebes
    @Gebes 7 ปีที่แล้ว

    Hallo Debukkit ich habe eine wichtige Frage,
    und zwar beim Bukkit Plugin programmieren:
    if(cmd.getName().equalsIgnoreCase("kill")){
    if(p != null){
    if(p.hasPermission("tutorial.kill")){
    if(args.length != 1){
    return false;
    }
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Player zielSpieler = this.getServer().getPlayer(args[0]);
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    if(zielSpieler.isOnline()){
    zielSpieler.setHealth(0);
    }else{
    p.sendMessage("Spieler nicht online.");
    }

    return true;
    }
    } else {
    sender.sendMessage("Dieses Kommando wird zurzeit nicht für die Konsole unterstützt.");
    }
    }
    und zwar ist dort die mit ausrufen geschmückte zeile kommt bei .getPlayer(args[0] das diese Methode zu alt ist und die surpresswarning oder wie die heißt hilft beim quick fix auch nicht. bitte um hilfe.

    • @DeBukkIt
      @DeBukkIt  7 ปีที่แล้ว

      Gebes Noch existiert diese Methode. Du kannst sie benutzen und es funktioniert. Irgendwann solltest du allerdings statt des Spieler-Namens eine UUID angeben. Ich habe dazu ein Video veröffentlicht, das zeigt, wie man Spieler-Namen über die Mojang-Server der entsprechenden UUID zuordnet.

    • @Gebes
      @Gebes 7 ปีที่แล้ว

      Danke für die Antwort :) Ich feiere deine Videos

    • @DeBukkIt
      @DeBukkIt  7 ปีที่แล้ว

      Gebes th-cam.com/video/VLg2TCjqxIc/w-d-xo.html
      Der Downloadlink ist allerdings defekt. Ich repariere ihn zeitnah.

    • @Gebes
      @Gebes 7 ปีที่แล้ว

      Viele Dank DeBukkit

  • @im_jope
    @im_jope 4 ปีที่แล้ว

    public LinkedList getWechselgeld(int wertInCent) {
    LinkedList Muenzen = new LinkedList();
    for (WertEnum m : WertEnum.values()) {
    while (m.getWert()

  • @7hoch0
    @7hoch0 7 ปีที่แล้ว +3

    Ich habe einfach
    while(wertInCent > 0) {
    for(Muenze aktuelleMuenze : Muenze.values()) {
    if(wertInCent >= aktuelleMuenze.getWert()) {
    wertInCent -= aktuelleMuenze.getWert();
    wechselgeld.add(aktuelleMuenze);
    break;
    }
    }
    }
    geschrieben. Empfand ich als einfacher.

    • @m9owN55r
      @m9owN55r 7 ปีที่แล้ว +1

      So hab ich's auch gemacht :)

    • @7hoch0
      @7hoch0 7 ปีที่แล้ว

      Ist berichtigt, habe hier einfach ein = vergessen.

    • @currywurst6267
      @currywurst6267 7 ปีที่แล้ว

      Dein Weg ist aber um einiges weniger per­for­mant. Loops sind so mit das Schlimmste, was du in Java gegen Performance machen kannst und du verwendest hier 2 Schleifen ineinander...

    • @Fledron
      @Fledron 7 ปีที่แล้ว

      curryWURSCHT Schwachsinn. Wenn man Looks richtig verwendet wird die Performance nicht verschlechtert. Und im Video hat es auch eine for Schleife benutzt. Eine while Schleife wäre besser gewesen.