java erstes projekt

H

Heyoka955

Gast
Statt „falsch“ würde ich sagen, es zeigt, dass du dir keine Gedanken zu den Namen gemacht hast...
hätte eine frage
zum Ausschnitt in der ersten methode wo das Array "int[] positionVomHindernis = new int[] { i, j };" gebildet wird, was macht genau dieses {i,j} drin und bei "marsKarte.put(positionVomHindernis, "#");" was wird genau von marskarte... übergeben, sind das die jeweiligen Indexe die wir vorher gebildet haben?
 
K

kneitzel

Gast
Hast Du Dir einmal im Detail angesehen, wie die Karte gespeichert wird? Meine Empfehlung ist immer noch, dass Du das Ganze einmal mit Stift und Zettel durchspielst. Was wird genau in der LinkedHashMap gespeichert? Was braucht man, um darauf zu zu greifen?

Oder ist dein Problem das Verständnis des genannten Codes? Da wird eine Variable positionVomHindernis vom Typ Int-Array definiert und direkt mit einem neuen Int Array initialisiert, wobei das Array die Elemente i und j hat.
 
H

Heyoka955

Gast
Hast Du Dir einmal im Detail angesehen, wie die Karte gespeichert wird? Meine Empfehlung ist immer noch, dass Du das Ganze einmal mit Stift und Zettel durchspielst. Was wird genau in der LinkedHashMap gespeichert? Was braucht man, um darauf zu zu greifen?

Oder ist dein Problem das Verständnis des genannten Codes? Da wird eine Variable positionVomHindernis vom Typ Int-Array definiert und direkt mit einem neuen Int Array initialisiert, wobei das Array die Elemente i und j hat.
um ehrlich zu sein habe ich ein wenig Problem das zu verstehen also deine aussage habe ich verstanden aber das problem ist ich weiß nicht genau wie die karte herstellt wird. ich weiß wie eine hashmap funktioniert also dass man keine Indexe sondern kexs abspeichert und Objekte als Inhalte übergeben kann, aber wie sich daraus die karte abbildet, ist schwer verdaulich.
so habe ich das verstanden
 

Anhänge

  • bilder.png
    bilder.png
    808,7 KB · Aufrufe: 42
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Ja, wobei das Wichtige ist aus meiner Sicht die Map Funktionalität. Wie diese dann am Ende gespeichert wird, ist erst einmal egal (Bei der Implementierung natürlich nicht, aber wenn man eine Map braucht, dann kann man sich auf die Map versteifen. Dann kann man später immer noch überlegen, wie die am Besten gespeichert werden sollte.)

Und bei der Map hast du halt immer Key - Value Paare. Und eine Funktionalität, um über den Key auf den Wert zuzugreifen.

Und hier wurde als Key eben ein int array definiert. Ist etwas, mit dem ich Probleme habe muss ich gestehen. Der Code mag zwar funktionieren, weil Du die eigentliche Map Funktionalität kaum nutzt (Du lässt Dir nur die Werte komplett geben und gehst diese dann selbst durch. Die Map hat da aber sehr viel Funktionalität bereits in sich drin.). So sieht man in dem anderen Thread eine get Funktion. Totaler Quatsch, die map das doch bereits hat. Aber das geht bei dem Code leider nicht, denn wir haben hier ein großes Problem:

Ein einfacher kleiner Code, der dies einmal demonstriert (Einfach in eine Datei Test.java packen):
Java:
public class Test {
  public static void main(String[] args) {
    int[] array1 = new int[] { 1, 2 };
    int[] array2 = new int[] { 1, 2 };

    if (!array1.equals(array2)) {
      throw new RuntimeException("Arrays not equal");
    }
  }
}
Da reicht dann ein einfaches "javac Test.java" mit einem folgenden "java Test".

Was passiert? Wir bekommen die Exception, aber warum? Ich habe doch zwei Array mit genau dem gleichen Inhalt!
Bei diesen Arrays wird bei der equals Methode aber leider nur die Gleichheit der Referenz geprüft. Und ich habe zwei unterschiedliche int Arrays, der Inhalt ist somit egal. Nur die Referenzen der beiden Objekte zählt!

Somit kann man die Funktionalität der Map in dem Code gar nicht wirklich nutzen. Und da frage ich mich dann schon, was Ihr da wie lernen sollt. Das finde ich auf den ersten Blick verwirrend (Aber evtl. greife ich dem Lehrer jetzt einfach nur vor?)

Was man daran halt auch erkennen kann: Ein einfaches int Array so als Key zu nutzen ist blöd. Bei Objektorientierter Entwicklung würde man da von mir aus eine Klasse Position schreiben, welche dann zwei ints beherbergen kann. Bei dieser Klasse würde man dann equals und hashCode überschreiben und schon hätte man Positionen, die da entsprechend tauglich ist. Dann wäre auch direkt deutlich: Das ist eine Position - hat ja den Typ Position!

Also ich finde es ehrlich gesagt verwirrend, wenn Leute Programmieren lernen, eine OO Sprache dazu wählen um dann eigentlich ganz auf Klassen zu verzichten? Wenn man rein prozedural programmieren möchte, dann gibt es dazu genug taugliche Möglichkeiten (Modula-2, Pascal, C, ...) und wenn es OO werden soll, dann bieten Pascal und C diese Wege auch, wobei dieses Vorgehen umstritten ist. Und ich sehe kein Problem darin, Leuten von Anfang an Klassen zu erläutern. Genutzt werden sie dann doch ehh (siehe LinkedHashMap)!

Ich bin recht weit abgeschweift, aber ich hoffe, ich konnte paar interessante Aspekte aufzeigen.
 
H

Heyoka955

Gast
Ja, wobei das Wichtige ist aus meiner Sicht die Map Funktionalität. Wie diese dann am Ende gespeichert wird, ist erst einmal egal (Bei der Implementierung natürlich nicht, aber wenn man eine Map braucht, dann kann man sich auf die Map versteifen. Dann kann man später immer noch überlegen, wie die am Besten gespeichert werden sollte.)

Und bei der Map hast du halt immer Key - Value Paare. Und eine Funktionalität, um über den Key auf den Wert zuzugreifen.

Und hier wurde als Key eben ein int array definiert. Ist etwas, mit dem ich Probleme habe muss ich gestehen. Der Code mag zwar funktionieren, weil Du die eigentliche Map Funktionalität kaum nutzt (Du lässt Dir nur die Werte komplett geben und gehst diese dann selbst durch. Die Map hat da aber sehr viel Funktionalität bereits in sich drin.). So sieht man in dem anderen Thread eine get Funktion. Totaler Quatsch, die map das doch bereits hat. Aber das geht bei dem Code leider nicht, denn wir haben hier ein großes Problem:

Ein einfacher kleiner Code, der dies einmal demonstriert (Einfach in eine Datei Test.java packen):
Java:
public class Test {
  public static void main(String[] args) {
    int[] array1 = new int[] { 1, 2 };
    int[] array2 = new int[] { 1, 2 };

    if (!array1.equals(array2)) {
      throw new RuntimeException("Arrays not equal");
    }
  }
}
Da reicht dann ein einfaches "javac Test.java" mit einem folgenden "java Test".

Was passiert? Wir bekommen die Exception, aber warum? Ich habe doch zwei Array mit genau dem gleichen Inhalt!
Bei diesen Arrays wird bei der equals Methode aber leider nur die Gleichheit der Referenz geprüft. Und ich habe zwei unterschiedliche int Arrays, der Inhalt ist somit egal. Nur die Referenzen der beiden Objekte zählt!

Somit kann man die Funktionalität der Map in dem Code gar nicht wirklich nutzen. Und da frage ich mich dann schon, was Ihr da wie lernen sollt. Das finde ich auf den ersten Blick verwirrend (Aber evtl. greife ich dem Lehrer jetzt einfach nur vor?)

Was man daran halt auch erkennen kann: Ein einfaches int Array so als Key zu nutzen ist blöd. Bei Objektorientierter Entwicklung würde man da von mir aus eine Klasse Position schreiben, welche dann zwei ints beherbergen kann. Bei dieser Klasse würde man dann equals und hashCode überschreiben und schon hätte man Positionen, die da entsprechend tauglich ist. Dann wäre auch direkt deutlich: Das ist eine Position - hat ja den Typ Position!

Also ich finde es ehrlich gesagt verwirrend, wenn Leute Programmieren lernen, eine OO Sprache dazu wählen um dann eigentlich ganz auf Klassen zu verzichten? Wenn man rein prozedural programmieren möchte, dann gibt es dazu genug taugliche Möglichkeiten (Modula-2, Pascal, C, ...) und wenn es OO werden soll, dann bieten Pascal und C diese Wege auch, wobei dieses Vorgehen umstritten ist. Und ich sehe kein Problem darin, Leuten von Anfang an Klassen zu erläutern. Genutzt werden sie dann doch ehh (siehe LinkedHashMap)!

Ich bin recht weit abgeschweift, aber ich hoffe, ich konnte paar interessante Aspekte aufzeigen.
versteheauch nicht wieso man das so kompliziert gemacth hat aber ich glaube seine Absicht war schweren Code ohne 100 prozentig zu verstehe schöner zu schreiben.
Das ist schon hardcore Niveau, also die aufgaben von codewars waren viel einfacher.

Mein Problem ist erstmal wie schaffe ich es diese else bedinung in switch umzuändern. ich weiß wie switch funktioniert aber bei den bedinungen und objekt vergleiche fällt mir das schwer, ich weiß zbs nicht was ich in switch(x) in x schreiben soll für meine emthode.
 
H

Heyoka955

Gast
Ja, wobei das Wichtige ist aus meiner Sicht die Map Funktionalität. Wie diese dann am Ende gespeichert wird, ist erst einmal egal (Bei der Implementierung natürlich nicht, aber wenn man eine Map braucht, dann kann man sich auf die Map versteifen. Dann kann man später immer noch überlegen, wie die am Besten gespeichert werden sollte.)

Und bei der Map hast du halt immer Key - Value Paare. Und eine Funktionalität, um über den Key auf den Wert zuzugreifen.

Und hier wurde als Key eben ein int array definiert. Ist etwas, mit dem ich Probleme habe muss ich gestehen. Der Code mag zwar funktionieren, weil Du die eigentliche Map Funktionalität kaum nutzt (Du lässt Dir nur die Werte komplett geben und gehst diese dann selbst durch. Die Map hat da aber sehr viel Funktionalität bereits in sich drin.). So sieht man in dem anderen Thread eine get Funktion. Totaler Quatsch, die map das doch bereits hat. Aber das geht bei dem Code leider nicht, denn wir haben hier ein großes Problem:

Ein einfacher kleiner Code, der dies einmal demonstriert (Einfach in eine Datei Test.java packen):
Java:
public class Test {
  public static void main(String[] args) {
    int[] array1 = new int[] { 1, 2 };
    int[] array2 = new int[] { 1, 2 };

    if (!array1.equals(array2)) {
      throw new RuntimeException("Arrays not equal");
    }
  }
}
Da reicht dann ein einfaches "javac Test.java" mit einem folgenden "java Test".

Was passiert? Wir bekommen die Exception, aber warum? Ich habe doch zwei Array mit genau dem gleichen Inhalt!
Bei diesen Arrays wird bei der equals Methode aber leider nur die Gleichheit der Referenz geprüft. Und ich habe zwei unterschiedliche int Arrays, der Inhalt ist somit egal. Nur die Referenzen der beiden Objekte zählt!

Somit kann man die Funktionalität der Map in dem Code gar nicht wirklich nutzen. Und da frage ich mich dann schon, was Ihr da wie lernen sollt. Das finde ich auf den ersten Blick verwirrend (Aber evtl. greife ich dem Lehrer jetzt einfach nur vor?)

Was man daran halt auch erkennen kann: Ein einfaches int Array so als Key zu nutzen ist blöd. Bei Objektorientierter Entwicklung würde man da von mir aus eine Klasse Position schreiben, welche dann zwei ints beherbergen kann. Bei dieser Klasse würde man dann equals und hashCode überschreiben und schon hätte man Positionen, die da entsprechend tauglich ist. Dann wäre auch direkt deutlich: Das ist eine Position - hat ja den Typ Position!

Also ich finde es ehrlich gesagt verwirrend, wenn Leute Programmieren lernen, eine OO Sprache dazu wählen um dann eigentlich ganz auf Klassen zu verzichten? Wenn man rein prozedural programmieren möchte, dann gibt es dazu genug taugliche Möglichkeiten (Modula-2, Pascal, C, ...) und wenn es OO werden soll, dann bieten Pascal und C diese Wege auch, wobei dieses Vorgehen umstritten ist. Und ich sehe kein Problem darin, Leuten von Anfang an Klassen zu erläutern. Genutzt werden sie dann doch ehh (siehe LinkedHashMap)!

Ich bin recht weit abgeschweift, aber ich hoffe, ich konnte paar interessante Aspekte aufzeigen.
ich habe die switch bedinung gepackt, meine frage ware ob das dennoch nicht zu lang ist? hatte überlegt den Code noch in eine Methode zu packen so dass printe das nu rmethoden Signatur beinhaltet. aber dann müsste ich auch vieles ändern.




Java:
public static void printeDasFeld() {
        //fehlerAbfangen();
        
            int[] max = maximum(marsKarte.keySet());
            for (int j = 0; j < max[1]; j++) {
                for (int i = 0; i < max[0]; i++) {
                // System.out.println(i + "," + j + ": " + get(mars, new int[] { i, j }));

                    if (get(marsKarte, new int[] { i, j }) == null) {     
                        System.out.print(" ");
                        continue;
                    }
                    switch(get(marsKarte, new int[] { i, j })){
                        case "#" : System.out.print("#");
                        
                        case "n" : System.out.print("^");
                        
                        case "s" : System.out.print("V");
                        
                        case "e" : System.out.print(">");
                    
                        default : System.out.print("<");
                    
                    }

                }
                System.out.println();
            }
        
        ausgabeAbgrenzungVonKarte(max); //Die Codebefehle hab ich in eine neue Methode geändert.
    }
 
K

kneitzel

Gast
Ja genau, das sollte noch weiter in Methoden gepackt werden. Zu viele Verschachtelungen sind nicht gut für die Übersichtlichkeit.
 
H

Heyoka955

Gast
Ja genau, das sollte noch weiter in Methoden gepackt werden. Zu viele Verschachtelungen sind nicht gut für die Übersichtlichkeit.
ja mache ispäter, ich muss pausieren, mein Problem ist eher den Code schritt für schritt zu verstehen, ich verstehe diese maximum Methode nicht ganz genau weil ich weiß was da passiert, ich hätte am anfnag gedacht dass er überprüft dass die breite und hoehe eingehalten werden und also 80 und 20jedoch unsicher.
Sehen codes immer so schlimm aus ? hahah
das ist echt heftig, der hat nichmal wirklich eingeführt in das Thema.
 

mrBrown

Super-Moderator
Mitarbeiter
Das ist schon hardcore Niveau, also die aufgaben von codewars waren viel einfacher. [...]
[...] Sehen codes immer so schlimm aus ? hahah


Du hast aber nicht wirklich erwartet, dass echter Code leichter ist als die ersten Übungen im Studium? Das hier ist noch ziemlich einfacher Code, sowohl vom Umfang auch als von der "Komplexität"...

Ist nicht böse gemeint, aber ich glaube die Aufgaben sind ganz gut, um dich mal etwas auf den Boden der Realität zurückzuholen. "Das ist schon hardcore Niveau" und "100k nach 3 Jahren" ist dann doch ziemlich weit voneinander entfernt...
 
H

Heyoka955

Gast
Du hast aber nicht wirklich erwartet, dass echter Code leichter ist als die ersten Übungen im Studium? Das hier ist noch ziemlich einfacher Code, sowohl vom Umfang auch als von der "Komplexität"...

Ist nicht böse gemeint, aber ich glaube die Aufgaben sind ganz gut, um dich mal etwas auf den Boden der Realität zurückzuholen. "Das ist schon hardcore Niveau" und "100k nach 3 Jahren" ist dann doch ziemlich weit voneinander entfernt...
also ich habe mit der main Methode weitergemacht und habe folgendes verändert.
Mein Problem ist dass ich nicht weiß was da seed macht?
Java:
public static void main(String[] args) {

        if (args.length > 1) {
            long seed = Long.parseLong(args[1]);
            r.setSeed(seed);
            // System.out.println("Seed: " + seed);
        }
        erstelleKarteUndSetzeRoverInDieMitte();
        String richtungsOptionenVomRover = args[0];
        printeDasFeld();
        for (int i = 0; i < richtungsOptionenVomRover.length(); i++) {
            BewegeRover(richtungsOptionenVomRover.charAt(i));
            printeDasFeld();
        }
    }
 

mrBrown

Super-Moderator
Mitarbeiter
also ich habe mit der main Methode weitergemacht und habe folgendes verändert.
Mein Problem ist dass ich nicht weiß was da seed macht?
Java:
public static void main(String[] args) {

        if (args.length > 1) {
            long seed = Long.parseLong(args[1]);
            r.setSeed(seed);
            // System.out.println("Seed: " + seed);
        }
        erstelleKarteUndSetzeRoverInDieMitte();
        String richtungsOptionenVomRover = args[0];
        printeDasFeld();
        for (int i = 0; i < richtungsOptionenVomRover.length(); i++) {
            BewegeRover(richtungsOptionenVomRover.charAt(i));
            printeDasFeld();
        }
    }

weißt du was super hilfreich ist: Auch irgendwie auf die Dinge einzugehen, die man zitiert.


Zum Seed: Guck in die Doku, wenn du das noch nie gemacht hast, ist es jetzt an der Zeit das zu lernen.
 
H

Heyoka955

Gast
ich habe das nicht verstanden genau soweit ich weiß wird der startwert auf ein anderes wert gesetzt.
 
K

kneitzel

Gast
Also echter Code hat natürlich eine höhere Komplexität, aber so sauber entwickelt wird, dann bleibt es auch lesbar.

Generell ist dabei aber wichtig, dass die Anforderungen sowie die verwendeten Begriffe klar sind. Und dann sind die Namen so, dass sie einleuchtend sind, so dass der Code sich selbst erklärt.

Natürlich ist ein x.y().z(90) absolut unverständlich. Aber ein car.getSteeringWheel().turnLeft(90) lässt schon eher vermuten, was dahinter steckt.

Daher ist es aus meiner Sicht, dass wirklich alles sauber dokumentiert wird. Das spart am Ende auch viel Zeil. Dokumentation kommt oft auch von ganz alleine und muss nicht viel Zeit in Anspruch nehmen. Man spricht hier dann manchmal von einer "Problem Domäne". Wenn man sich da nicht wirklich klar drüber ist, dann kommen halt so Dinge wie: Mal ist es die Karte und dann plötzlich Klötze ...

Aber klar: So sauberen Code schreiben viele nicht. Und dann kommen ganz tolle Ergebnisse dabei raus. Aber das sind dann Negativbeispiele. Und normalerweise gibt es halt zu allen Code-Änderungen auch entsprechende Kontrollen, d.h. Dritte schauen drüber um sicher zu stellen, dass der Code vernünftig ist. Code den ein Team-Mitglied nicht versteht, muss halt so angepasst werden, dass er verständlich wird.
 

mihe7

Top Contributor
So. Jetzt rufst Du mal google auf und tippst dort random seed ein. Und dann liest Du einen der ersten Artikel, dann weißt Du, wofür das ganze da ist.
 
K

kneitzel

Gast
Wenn Du eine Funnktion nicht verstehst, dann gehst Du wir folgt vor:
a) Auf welcher instanz wird die Funktion aufgerufen? Das ist bei dir r,
b) was ist r? Das ist bei Dir Random
c) Also musst Du Dir die Doku zu Random ansehen. Dazu kannst Du Google nutzen oder du lädst Dir die Dokumentation runter und dann kannst Du Dich da auch durchclickern (Also erst Namespace und dann die Klasse). Eine Suche ist bei mir immer "<Klassenname> class java"
d) Google liefert dann ganz viele Treffer und du willst da den Link von Oracle Help Center ... Und da hast Du oft mehrere Versionen (JRE8 und JRE7 sind die ersten beiden Treffer bei mir).

So kommst Du dann auf die entsprechende Dokumentation der Klasse Random:

Und in der allgemeinen Beschreibung oben findest Du dann auch die Erläuterung, was dieses Seed bedeutet:
If two instances of Random are created with the same seed, and the same sequence of method calls is made for each, they will generate and return identical sequences of numbers. In order to guarantee this property, particular algorithms are specified for the class Random. Java implementations must use all the algorithms shown here for the class Random, for the sake of absolute portability of Java code. However, subclasses of class Random are permitted to use other algorithms, so long as they adhere to the general contracts for all the methods.

Wenn Du also den Seed vorgibst, dann kannst Du genau sagen, welche Zufallszahlen generiert werden. Kannst Du ja mal testen:
Schreib ein kleines Programm, welches eine Instanz von Random erzeugt, einen Seed setzt (egal was, irgendwas konstantes) und dann mehrere Zufallszahlen erzeugt und ausgibt.
Und dann startest Du das mehrfach und schaust Dir die erzeugten Zahlen einmal an.
 
H

Heyoka955

Gast
Also echter Code hat natürlich eine höhere Komplexität, aber so sauber entwickelt wird, dann bleibt es auch lesbar.

Generell ist dabei aber wichtig, dass die Anforderungen sowie die verwendeten Begriffe klar sind. Und dann sind die Namen so, dass sie einleuchtend sind, so dass der Code sich selbst erklärt.

Natürlich ist ein x.y().z(90) absolut unverständlich. Aber ein car.getSteeringWheel().turnLeft(90) lässt schon eher vermuten, was dahinter steckt.

Daher ist es aus meiner Sicht, dass wirklich alles sauber dokumentiert wird. Das spart am Ende auch viel Zeil. Dokumentation kommt oft auch von ganz alleine und muss nicht viel Zeit in Anspruch nehmen. Man spricht hier dann manchmal von einer "Problem Domäne". Wenn man sich da nicht wirklich klar drüber ist, dann kommen halt so Dinge wie: Mal ist es die Karte und dann plötzlich Klötze ...

Aber klar: So sauberen Code schreiben viele nicht. Und dann kommen ganz tolle Ergebnisse dabei raus. Aber das sind dann Negativbeispiele. Und normalerweise gibt es halt zu allen Code-Änderungen auch entsprechende Kontrollen, d.h. Dritte schauen drüber um sicher zu stellen, dass der Code vernünftig ist. Code den ein Team-Mitglied nicht versteht, muss halt so angepasst werden, dass er verständlich wird.
Kann ich dir morgen meinen Code sendne und du sagst mir ob der sauber genug ist?
 
K

kneitzel

Gast
Warum sammeln sich die Negativbeispiele immer um mich herum? :(

Nunja - das Problem ist halt, mit welcher Einstellung die Leute an die Sache heran gehen. Wenn der Anspruch nicht besteht oder die Fähigkeiten nicht ausreichen, dann ist das Ergebnis halt auch entsprechend. Aber die Probleme mit der Qualität und so muss man halt doch sehen.

Wichtig: Das ist keine Wertung! Wir haben Kollegen, die halt in anderen Bereichen tätig sind und die schreiben sich dann ein kleines Tool selbst. Da kann man gewisse Dinge nicht erwarten. Aber bei einer professionellen Softwareentwicklung mit entsprechenden Leuten, die das wirklich als ihre Berufung ansehen, dann sollte das Ergebnis entsprechend sein.
 
K

kneitzel

Gast
Kann ich dir morgen meinen Code sendne und du sagst mir ob der sauber genug ist?

Also das kann nicht funktionieren:
a) Ich kenne die Anforderungen nicht, die an Deinen Code gestellt werden. Ich kann also die "perfekte" Lösung nicht kennen. So wie ich es verstehe ist das ja eben Teil des Unterrichts bei Dir...
b) Du bist ja noch Einsteiger - die Anforderungen, die ich stellen würde, wären also mit Sicherheit von dir nicht zu erfüllen. Und der Umfang geht natürlich deutlich über das hinaus, was ein Forum leisten kann. (Dazu gibt es ganze Bücher! Aber auch online findet sich sehr viel, z.B. https://clean-code-developer.de/

Somit können wir Hinweise geben. Wir können Fragen beantworten. Aber Du musst Dir auch selbst einiges erarbeiten. Ein Software Entwickler zeichnet sich durch zwei Dinge aus - ohne die geht es aus meiner Sicht nicht:
- Selbständiges Erarbeiten von Wissen (Sowohl im Bereich der Softwareentwicklung aber auch bezüglich Problem-Domäne und so....)
- Ausdauer bei Fehlersuche. Ohne Debugging geht es nicht. Und bei komplexen Projekten ist es normal, dass es Probleme gibt denen man auf den Grund gehen muss. Wer da nicht selbst dran bleibt um Probleme zu lösen, der muss nicht erst anfangen. Auch schnelle Tests (Proof of Concept) sind da wichtig und so ...
 
H

Heyoka955

Gast
Ich
Also das kann nicht funktionieren:
a) Ich kenne die Anforderungen nicht, die an Deinen Code gestellt werden. Ich kann also die "perfekte" Lösung nicht kennen. So wie ich es verstehe ist das ja eben Teil des Unterrichts bei Dir...
b) Du bist ja noch Einsteiger - die Anforderungen, die ich stellen würde, wären also mit Sicherheit von dir nicht zu erfüllen. Und der Umfang geht natürlich deutlich über das hinaus, was ein Forum leisten kann. (Dazu gibt es ganze Bücher! Aber auch online findet sich sehr viel, z.B. https://clean-code-developer.de/

Somit können wir Hinweise geben. Wir können Fragen beantworten. Aber Du musst Dir auch selbst einiges erarbeiten. Ein Software Entwickler zeichnet sich durch zwei Dinge aus - ohne die geht es aus meiner Sicht nicht:
- Selbständiges Erarbeiten von Wissen (Sowohl im Bereich der Softwareentwicklung aber auch bezüglich Problem-Domäne und so....)
- Ausdauer bei Fehlersuche. Ohne Debugging geht es nicht. Und bei komplexen Projekten ist es normal, dass es Probleme gibt denen man auf den Grund gehen muss. Wer da nicht selbst dran bleibt um Probleme zu lösen, der muss nicht erst anfangen. Auch schnelle Tests (Proof of Concept) sind da wichtig und so ...
Wir sollen Variablen sinnvoll benennen.
Wir Sollen Methoden aufteilen wenn möglich.
Und an richtiger Stelle kommentieren. Da wo es Sinn macht.
Und wir sollen eine Änderung der Datenstrukturen in Betracht ziehen.
 
H

Heyoka955

Gast
Ich

Wir sollen Variablen sinnvoll benennen.
Wir Sollen Methoden aufteilen wenn möglich.
Und an richtiger Stelle kommentieren. Da wo es Sinn macht.
Und wir sollen eine Änderung der Datenstrukturen in Betracht ziehen.
Ihre Aufgaben

  1. Reparieren Sie einen Bug, bei dem der Rover plötzlich verschwindet. Sie können den Bug mit ./gradlew run --args="lff 4711" reproduzieren. Die Zahl sorgt dafür, dass die Hindernisse immer an den gleichen Stellen sind.
  2. Formen Sie den Code nach den Ideen, die Sie in Aufgabe 1 entwickelt haben um. Jeder Änderungsschritt (d.h. eine Änderung des Quelltextes, die einen Zweck hat) soll ein einzelner Commit sein, nach jedem Commit soll die Anwendung compilier- und startbar sein. Jeder Commit soll eine Commitnachricht haben, aus dem man nachvollziehen kann, welchen Zweck die Änderung hat. Ziehen Sie auch eine Änderung der benutzten Datenstrukturen in Betracht.
  3. Passen Sie den Bewegungscode so an, dass der Roboter einzelne Befehle ignoriert, die ihn in ein Hindernis laufen lassen würden.
 
H

Heyoka955

Gast
stimmt schon soll ich alles umändern jetzt?

also für die aufgabe 1 gehe ich aus dass die move Methode zuständig ist für den bug
Java:
public static void BewegeRover(char c) {
        if (c == 'f') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("n"))
                p[1]--;
            else if (get(marsKarte, p).equals("s"))
                p[1]++;
            else if (get(marsKarte, p).equals("e"))
                p[0]++;
            else if (get(marsKarte, p).equals("w"))
                p[0]--;
        } else if (c == 'b') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("s"))
                p[1]--;
            else if (get(marsKarte, p).equals("n"))
                p[1]++;
            else if (get(marsKarte, p).equals("w"))
                p[0]++;
            else if (get(marsKarte, p).equals("e"))
                p[0]--;
        } else if (c == 'l') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("n"))
                marsKarte.put(p, "w");
            else if (get(marsKarte, p).equals("s"))
                marsKarte.put(p, "e");
            else if (get(marsKarte, p).equals("e"))
                marsKarte.put(p, "n");
            else if (get(marsKarte, p).equals("w"))
                marsKarte.put(p, "s");
        } else if (c == 'r') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("w"))
                marsKarte.put(p, "n");
            else if (get(marsKarte, p).equals("e"))
                marsKarte.put(p, "s");
            else if (get(marsKarte, p).equals("n"))
                marsKarte.put(p, "e");
            else if (get(marsKarte, p).equals("s"))
                marsKarte.put(p, "w");
        }

    }
 

mihe7

Top Contributor
Umändern?!? Du sollst den Code nehmen, den Du bekommen hast (oder ggf. schon in einer vorherigen Aufgabe angepasst hast?) und den Bug suchen und Dir überlegen, wie Du ihn beheben kannst. In Aufgabe 2 sollst Du die Änderungen vornehmen.
 
H

Heyoka955

Gast
Umändern?!? Du sollst den Code nehmen, den Du bekommen hast (oder ggf. schon in einer vorherigen Aufgabe angepasst hast?) und den Bug suchen und Dir überlegen, wie Du ihn beheben kannst. In Aufgabe 2 sollst Du die Änderungen vornehmen.
ne der ursprungscode sah so aus
Java:
package rover;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Set;

public class Start {

    static Random r = new Random();
    static LinkedHashMap<int[], String> mars;

    public static void init() {
        mars = new LinkedHashMap<>();
        int x = 80;
        int y = 20;
        int rx = x / 2;
        int ry = y / 2;
        for (int i = 0; i < x; i++) {
            for (int j = 0; j < y; j++) {
                int[] p = new int[] { i, j };
                if (r.nextDouble() < 0.25 && !(rx == i && ry == j))
                    mars.put(p, "#");
            }
        }
        mars.put(new int[] { rx, ry }, "n");
    }

    public static int[] maximum(Set<int[]> set) {
        int[] x = new int[2];
        for (int[] e : set) {
            if (e[0] > x[0])
                x[0] = e[0];
            if (e[1] > x[1])
                x[1] = e[1];
        }
        return x;
    }

    public static String get(Map<int[], String> kloetze, int[] p) {
        Set<Entry<int[], String>> entrySet = kloetze.entrySet();
        for (Entry<int[], String> entry : entrySet) {
            if (entry.getKey()[0] == p[0] && entry.getKey()[1] == p[1])
                return entry.getValue();
        }
        return null;
    }

    public static void out() {
        // Set<int[]> keySet = mars.keySet();
        // for (int[] e : keySet) {
        // if (e[0] == 39 && e[1] == 10)
        // System.err.println(mars.get(e) + " " + e.hashCode());
        // }

        int[] max = maximum(mars.keySet());
        for (int j = 0; j < max[1]; j++) {
            for (int i = 0; i < max[0]; i++) {
                // System.out.println(i + "," + j + ": " + get(mars, new int[] { i, j }));

                if (get(mars, new int[] { i, j }) == null) {
                    System.out.print(" ");
                    continue;
                }
                if (get(mars, new int[] { i, j }).equals("#"))
                    System.out.print("#");
                else if (get(mars, new int[] { i, j }).equals("n"))
                    System.out.print("^");
                else if (get(mars, new int[] { i, j }).equals("s"))
                    System.out.print("V");
                else if (get(mars, new int[] { i, j }).equals("e"))
                    System.out.print(">");
                if (get(mars, new int[] { i, j }).equals("w"))
                    System.out.print("<");

            }
            System.out.println();
        }
        for (int i = 0; i < max[0]; i++) {
            System.out.print("=");
        }
        System.out.println();
    }

    public static void main(String[] args) {

        if (args.length > 1) {
            long seed = Long.parseLong(args[1]);
            r.setSeed(seed);
            // System.out.println("Seed: " + seed);
        }
        init();
        String pg = args[0];
        out();
        for (int i = 0; i < pg.length(); i++) {
            make(pg.charAt(i));
            out();
        }
    }

    public static void make(char c) {
        if (c == 'f') {
            int[] p = findeRover();
            if (get(mars, p).equals("n"))
                p[1]--;
            else if (get(mars, p).equals("s"))
                p[1]++;
            else if (get(mars, p).equals("e"))
                p[0]++;
            else if (get(mars, p).equals("w"))
                p[0]--;
        } else if (c == 'b') {
            int[] p = findeRover();
            if (get(mars, p).equals("s"))
                p[1]--;
            else if (get(mars, p).equals("n"))
                p[1]++;
            else if (get(mars, p).equals("w"))
                p[0]++;
            else if (get(mars, p).equals("e"))
                p[0]--;
        } else if (c == 'l') {
            int[] p = findeRover();
            if (get(mars, p).equals("n"))
                mars.put(p, "w");
            else if (get(mars, p).equals("s"))
                mars.put(p, "e");
            else if (get(mars, p).equals("e"))
                mars.put(p, "n");
            else if (get(mars, p).equals("w"))
                mars.put(p, "s");
        } else if (c == 'r') {
            int[] p = findeRover();
            if (get(mars, p).equals("w"))
                mars.put(p, "n");
            else if (get(mars, p).equals("e"))
                mars.put(p, "s");
            else if (get(mars, p).equals("n"))
                mars.put(p, "e");
            else if (get(mars, p).equals("s"))
                mars.put(p, "w");
        }

    }

    private static int[] findeRover() {
        Set<Entry<int[], String>> entrySet = mars.entrySet();
        for (Entry<int[], String> entry : entrySet) {
            if (entry.getValue() != null && !entry.getValue().equals("#"))
                return entry.getKey();
        }
        throw new IllegalStateException("Rover missing in action");
    }

}



//Mein code sieht so aus
ublic class Start {
    
    static Random r = new Random();
    static LinkedHashMap<int[], String> marsKarte;
    static int BREITE_MARSES = 80;                         
    static int HOEHE_MARSES = 20;           
    static int ROVER_XPOSITION = BREITE_MARSES / 2;   
    static int ROVER_YPOSITION = HOEHE_MARSES / 2;

    public static void erstelleKarteUndSetzeRoverInDieMitte() {
        marsKarte = new LinkedHashMap<>();
        
        for (int i = 0; i < BREITE_MARSES; i++) {
            for (int j = 0; j < HOEHE_MARSES; j++) {
                int[] positionVomHindernis = new int[] { i, j };
                if (r.nextDouble() < 0.25 && !(ROVER_XPOSITION == i && ROVER_YPOSITION == j))
                    marsKarte.put(positionVomHindernis, "#"); //Füge zur LinkedHashMap die Position auf der sich ein Hindernis befindet.
            }
        }
        marsKarte.put(new int[] {ROVER_XPOSITION , ROVER_YPOSITION }, "n"); //Erzeuge den Roboter auf den jeweiligen Positionen
    }   
    
    
    
    
    public static int[] maximum(Set<int[]> set) {
        int[] x = new int[2];
        for (int[] e : set) {
            if (e[0] > x[0])
                x[0] = e[0];
            if (e[1] > x[1])
                x[1] = e[1];
        }
        return x;
    }

    public static String get(Map<int[], String> kloetze, int[] p) {
        Set<Entry<int[], String>> entrySet = kloetze.entrySet();
        for (Entry<int[], String> entry : entrySet) {
            if (entry.getKey()[0] == p[0] && entry.getKey()[1] == p[1])
                return entry.getValue();
        }
        return null;
    }

     public static void printeDasFeld() {
        //fehlerAbfangen();
        
            int[] max = maximum(marsKarte.keySet());
            for (int j = 0; j < max[1]; j++) {
                for (int i = 0; i < max[0]; i++) {
                // System.out.println(i + "," + j + ": " + get(mars, new int[] { i, j }));

                    if (get(marsKarte, new int[] { i, j }) == null) {     
                        System.out.print(" ");
                        continue;
                    }
                    switch(get(marsKarte, new int[] { i, j })){
                        case "#" : System.out.print("#"); continue;
                        case "n" : System.out.print("^"); continue;
                        case "s" : System.out.print("V"); continue;
                        case "e" : System.out.print(">"); continue;
                        default : System.out.print("<");
                    }
                }
                System.out.println();
            }
        ausgabeAbgrenzungVonKarte(max); //Die Codebefehle hab ich in eine neue Methode geändert.
    }
    
    public static void ausgabeAbgrenzungVonKarte(int[] max){
        for (int i = 0; i < max[0]; i++) {  //Dient zur Trennung und Abgrenzung der unteren und oberen Grenze der Marskarte
            System.out.print("=");
        }
        System.out.println();
        
        
    }
    
    //public static void fehlerAbfangen(){
        //Set<int[]> keySet = marsKarte.keySet();
        //for (int[] e : keySet) {
          //if (e[0] == 39 && e[1] == 10)
          //System.err.println(marsKarte.get(e) + " " + e.hashCode());
        //}
    
    //}
    

    
    

    public static void main(String[] args) {

        if (args.length > 1) {
            long seed = Long.parseLong(args[1]);
            r.setSeed(seed);
            // System.out.println("Seed: " + seed);
        }
        erstelleKarteUndSetzeRoverInDieMitte();
        String pg = args[0];
        printeDasFeld();
        for (int i = 0; i < pg.length(); i++) {
            make(pg.charAt(i));
            printeDasFeld();
        }
    }

    public static void make(char c) {
        if (c == 'f') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("n"))
                p[1]--;
            else if (get(marsKarte, p).equals("s"))
                p[1]++;
            else if (get(marsKarte, p).equals("e"))
                p[0]++;
            else if (get(marsKarte, p).equals("w"))
                p[0]--;
        } else if (c == 'b') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("s"))
                p[1]--;
            else if (get(marsKarte, p).equals("n"))
                p[1]++;
            else if (get(marsKarte, p).equals("w"))
                p[0]++;
            else if (get(marsKarte, p).equals("e"))
                p[0]--;
        } else if (c == 'l') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("n"))
                marsKarte.put(p, "w");
            else if (get(marsKarte, p).equals("s"))
                marsKarte.put(p, "e");
            else if (get(marsKarte, p).equals("e"))
                marsKarte.put(p, "n");
            else if (get(marsKarte, p).equals("w"))
                marsKarte.put(p, "s");
        } else if (c == 'r') {
            int[] p = findeRover();
            if (get(marsKarte, p).equals("w"))
                marsKarte.put(p, "n");
            else if (get(marsKarte, p).equals("e"))
                marsKarte.put(p, "s");
            else if (get(marsKarte, p).equals("n"))
                marsKarte.put(p, "e");
            else if (get(marsKarte, p).equals("s"))
                marsKarte.put(p, "w");
        }

    }

    private static int[] findeRover() {
        Set<Entry<int[], String>> entrySet = marsKarte.entrySet();
        for (Entry<int[], String> entry : entrySet) {
            if (entry.getValue() != null && !entry.getValue().equals("#"))
                return entry.getKey();
        }
        throw new IllegalStateException("Rover missing in action");
    }

}
 
H

Heyoka955

Gast
ich muss das bis freitag abgeben, das w
Umändern?!? Du sollst den Code nehmen, den Du bekommen hast (oder ggf. schon in einer vorherigen Aufgabe angepasst hast?) und den Bug suchen und Dir überlegen, wie Du ihn beheben kannst. In Aufgabe 2 sollst Du die Änderungen vornehmen.
ich habe den Code gefunden glaube ich für den fehler

also
Java:
private static int[] findeRover() {
        Set<Entry<int[], String>> entrySet = marsKarte.entrySet();
        for (Entry<int[], String> entry : entrySet) {
            if (entry.getValue() != null && !entry.getValue().equals("#"))
                return entry.getKey();
        }
        
        throw new IllegalStateException("Rover missing in action");
    }


//Das problem ist dass eine abfrage gemacht wird dass wenn die bedinung != "#" ist dass dann das
//aktuelle pfeil returnt wird aber was wenn das nicht der fall eintritt sondern dass die bedinung erfüllt ist und
//Der Rover genau auf dem "#", Dann wird ja der wert nicht returnt? jetzt ist hier das Problem wie änder ich diesen code so ab,
//dass der code doch die Stelle printet.
 
H

Heyoka955

Gast
Dann hast Du ja noch viele Stunden Zeit.

Zu Deiner Erklärung: ich würde jetzt mal annehmen, dass der Rover Hindernissen ausweichen soll, d. h. der Rover kann nicht genau auf dem "#" stehen.
ich habe noch vier andere fächer ahahaah ist kritisch, daher sitze ich ran, lieber programmieren als feiern.
Ja denke das ist das Problem also diese Methode dekt den fall nicht ab falls doch mal Sternchen kommen sollte,? oder leige ich falsch. Die Methode dient dazu die aktuelle Position des rovers zurückzugeben.
Der Rover soll diese Befehle ignorieren also die ihn auffordern über die Hindernisse zu gehen aber das Problem ist, ich muss erstmal den Bug finden der dazu sorgt dass er verschwindet. Und meine Intuition und Logik sagt mir die Methode hat damit zu tun.
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor
Die Methode soll nur die aktuelle Position des Rovers zurückgeben. Das macht die Methode vermutlich auch, sofern ein Rover in der Karte vorhanden ist. Ist kein Rover vorhanden, kann natürlich keine Position zurückgegeben werden und es wird eine Exception geworfen. Da scheint das Problem nicht zu liegen...
 
H

Heyoka955

Gast
Die Methode soll nur die aktuelle Position des Rovers zurückgeben. Das macht die Methode vermutlich auch, sofern ein Rover in der Karte vorhanden ist. Ist kein Rover vorhanden, kann natürlich keine Position zurückgegeben werden und es wird eine Exception geworfen. Da scheint das Problem nicht zu liegen...
Das heißt es muss irgendwas in der Methode bewegeRover geben das dazu sorgt daaa der rover gelöscht wird sodass er in der aet nicht vorkommt.
 

mihe7

Top Contributor
Habe gerade gesehen, dass in der Aufgabe nichts davon steht., dass Du nicht auf Hindernisse fahren dürftest. D. h. das Hindernis und der Rover könnten sich tatsächlich auf der gleichen Position befinden. Das nur der Vollständigkeit halber, an der Methode findeRover liegt es trotzdem nicht.
 
H

Heyoka955

Gast
Habe gerade gesehen, dass in der Aufgabe nichts davon steht., dass Du nicht auf Hindernisse fahren dürftest. D. h. das Hindernis und der Rover könnten sich tatsächlich auf der gleichen Position befinden. Das nur der Vollständigkeit halber, an der Methode findeRover liegt es trotzdem nicht.
aber in der aufgabe drei steht dass man diese befehle ignorieren soll,

Passen Sie den Bewegungscode so an, dass der Roboter einzelne Befehle ignoriert, die ihn in ein Hindernis laufen lassen würden.


also ich schaue mal ab der Methode bewegerover nach, kannst du mir vllr sagen, ob das an einer zeile von der codezeile liegt.
Java:
    } else if (c == 'l') {
            int[] derzeitigePosition = findeRover();
            if (get(marsKarte, derzeitigePosition).equals("n"))
                marsKarte.put(derzeitigePosition, "w");
            else if (get(marsKarte, derzeitigePosition).equals("s"))
                marsKarte.put(derzeitigePosition, "e");
            else if (get(marsKarte, derzeitigePosition).equals("e"))
                marsKarte.put(derzeitigePosition, "n");
            else if (get(marsKarte, derzeitigePosition).equals("w"))
                marsKarte.put(derzeitigePosition, "s");
        } else if (c == 'r') {
            int[] derzeitigePosition = findeRover();
            if (get(marsKarte, derzeitigePosition).equals("w"))
                marsKarte.put(derzeitigePosition, "n");
            else if (get(marsKarte, derzeitigePosition).equals("e"))
                marsKarte.put(derzeitigePosition, "s");
            else if (get(marsKarte, derzeitigePosition).equals("n"))
                marsKarte.put(derzeitigePosition, "e");
            else if (get(marsKarte, derzeitigePosition).equals("s"))
                marsKarte.put(derzeitigePosition, "w");
        }
 
Zuletzt bearbeitet von einem Moderator:
H

Heyoka955

Gast
ich würde annehmen, dass also die Methode dafür zuständig ist (bewege rover), das Problem ist, dass wir wissen müssen, was in dem rover passiert. Wenn eine Kollision eintritt verschwindet der rover, das heißt wir müssen eine Methode schreiben die dazu sorgt, dass die Kollision abgefafangen wird.
 

mihe7

Top Contributor
kannst du mir als tipp sagen wo ich den fehler finde also in welcher ethode?
Tipp: wirft denn die findeRover-Methode eine Exception? Wenn nein, warum nicht?

ch würde annehmen, dass also die Methode dafür zuständig ist (bewege rover), das Problem ist, dass wir wissen müssen, was in dem rover passiert. Wenn eine Kollision eintritt verschwindet der rover, das heißt wir müssen eine Methode schreiben die dazu sorgt, dass die Kollision abgefafangen wird.
Ja, das ist aber erst die dritte Aufgabe. Du musst die zweite vorher machen (hängt zusammen).
 

mihe7

Top Contributor
Das wäre, wie gesagt, die dritte Aufgabe. In den ersten beiden geht es erstmal nur darum, dass der Rover verschwindet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
B erstes Java-Applet Java Basics - Anfänger-Themen 7
G Erstes Java-Programm Java Basics - Anfänger-Themen 10
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben