Einigen wir uns bitte alle darauf, dass Kommentar #500 der letzte zu diesem Thema sein wird?LOL - soll ja beruhigende Wirkung haben. Gute Nacht.
Oh, nur noch 101 Kommentare bis zum Ziel.
Einigen wir uns bitte alle darauf, dass Kommentar #500 der letzte zu diesem Thema sein wird?LOL - soll ja beruhigende Wirkung haben. Gute Nacht.
Oh, nur noch 101 Kommentare bis zum Ziel.
soll ich meinen account löschen lolEinigen wir uns bitte alle darauf, dass Kommentar #500 der letzte zu diesem Thema sein wird?
Die Geister, die ich rief. Nach #500 schreib ich garantiert nichts mehrEinigen wir uns bitte alle darauf, dass Kommentar #500 der letzte zu diesem Thema sein wird?
Das würde am Thread nichts ändern.soll ich meinen account löschen lol
ja okay habe die aufgabe eig schon fast!
naja mache jetzt theoretische Informatik.
Bei mir klappt das Für den Fall mit b nicht falls f gleich b ist?Da war ja die eine Fehlermeldung in der Expertin klasse Rover is missin und die stand unten bei der Ausgabe nie wenn der Rover verschwand und ein Kollege meinte mir man solle das so machen.
Aber von der Aufgabe 1 her sehr unübersichtlich.
Und welche?Dann gibt es eine Fehlermeldung
Finished with non zero exitUnd welche?
ja wir haben das auf Intelij gemacht sogarSicher, dass es keinen Compile-Fehler und auch keine Exception gab?
Also das funktioniert.Es
ja wir haben das auf Intelij gemacht sogar
Die non-zero exit exception kommt rausIch will ja nichts sagen, aber in Deinem Screenshort ist mars rot unterringelt. Hat das eine andere Bedeutung als "Fehler"?
Also der macht den nur bei lff weg und nicht bei rffDie non-zero exit exception kommt raus
Ja und gestern war heute morgen.
So habe ich das hingeschrieben!Java:if (c == 'f') { int[] p = findeRover(); if (get(mars, p).equals("n") && !get(mars, new int[][]{p[0],p[1]-1}).equals("#")) p[1]--; else if (get(mars,p).equals("s") && !get(mars, new int[][] {p[0],p[1]+1}).equals("#")) p[1]++; else if (get(mars, p).equals("e") && !get(mars, new int[][] {p[0]+1,p[1]}).equals("#")) p[0]++; else if (get(mars, p).equals("w") && !get(mars, new int[][]{p[0]-1}.p[1]).equals("#")) p[0]--; } //int kann nicht convertent to int[] ist die fehlermeldung
Mein Freund ht saa Probleme, ich saß an seinem noteBook und habe das abfotografiert.Also das ist doch nicht mehr dein aktueller Code. Wenn, dann musst uns den aktuellen codeabschnitt geben.
Und Du hast doch auch eine genaue Fehlermeldung. Was ist in Start.java Zeile 111? Und wieso kann man so Fehlermeldungen nicht per copy and Paste weiter geben?
Public boolean h(char c){
if (c == 'f') {
int[] p = findeRover();
if (get(mars, p).equals("n") && !get(mars, new int[]{p[0],p[1]-1}).equals("#"))
Return false;
else if (get(mars,p).equals("s") && !get(mars, new int[] {p[0],p[1]+1}).equals("#"))
Return false;
else if (get(mars, p).equals("e") && !get(mars, new int[] {p[0]+1,p[1]}).equals("#"))
Return false;
else if (get(mars, p).equals("w") && !get(mars, new int[] {p[0]-1,p[1]}).equals("#"))
Return false;
Return true;
}
}
Mache ich jetzt wenn ich zuhause binHabe ich das jetzt richtig verstanden:
Wir haben zwei Computer
- diese haben einen unterschiedlichen Code
- diese haben unterschiedliche Fehlerbilder
Und nun bekommen wir den Code von c='f' von Deinem System aber die Fehler, die wir bekommen haben, waren beim anderen System. Hinzu kommt, dass das Problem bei c='b' sein sollte, oder habe ich da etwas missverstanden?
Und welche Zeile er angemeckert hat, wissen wir immer noch nicht (außer, dass es eben Zeile 111 ist.
Wenn das eine Foto von Intellij war: Intellij unterstreicht Fehler. Also gibt es definitiv Fehler in der Applikation. Statt Fotos mit dem Handy sollte man eher Screenshot machen oder so. Wenn ihr das richtige Fenster mit den Fehlermeldungen nicht finden solltet (evtl. habt ihr das ja geschlossen oder so, wobei ich meine, dass IntelliJ beim Build das Fenster auch wieder öffnen würde...) kann man mit der Maus auch auf so eine unterstrichene Stelle gehen und dann kommt nach kurzer Zeit eine Einblendung mit dem Fehler.
Oder gib uns mal den ganzen Code als Dateianhang und dann können wir auch einmal drüber schauen.
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") && !get(mars, new int[]{p[0],p[1]-1}).equals("#"))
p[1]--;
else if (get(mars, p).equals("s") && !get(mars, new int[] {p[0],p[1]+1}).equals("#"))
p[1]++;
else if (get(mars, p).equals("e") && !get(mars, new int[] {p[0]+1,p[1]}).equals("#"))
p[0]++;
else if (get(mars, p).equals("w") && !get(mars, new int[] {p[0]-1,p[1]}).equals("#"))
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");
}
}
Hilf mir mal haahah77 comments left.![]()
Nur so als Hinweis: das rote Exception in thread ... ist die Exception und die Fehlermeldung, nicht das "non-zero exit".Die non-zero exit exception kommt raus
was heißt das denn expection in threadNur so als Hinweis: das rote Exception in thread ... ist die Exception und die Fehlermeldung, nicht das "non-zero exit".
if (stringReturningFunction().equals("something")) { ... }
String returnedValue = stringReturningFunction();
if (returnedValue.equals("something")) { ... }
Try catch?Also gut, dann wollen wir da mal dran gehen.
Du hast IntelliJ, also wollen wir jetzt mal zusammen den Fehler finden und ggf beheben.
Du siehst erst einmal die Exception: Die NPE tritt in Start.java Zeile 111 auf. Dann geh doch mal auf die Zeile 111. IntelliJ zeigt ja die Zeilen an, so dass dies erst einmal möglich sein sollte. Zu welcher Zeile kommst Du da genau?
Und nun setzen wir in dieser Zeile einen sogenannten Breakpoint, d.h. wir sagen IntelliJ, dass es aufhören soll das Programm abzuarbeiten, wenn es in diese Zeile kommt. Dazu klicken wir einfach links neben das Codefenster - zwischen den Rahmen und der Zeilennummer, so dass da ein roter Punkt erscheint:
Anhang anzeigen 11703
Als nächstes starten wir das Programm mit dem Debugger. Dazu klicken wir oben in der Leiste nicht auf den grünen pfeil sondern den grünen Käfer daneben. (Die Start-Config wirst Du ja gesetzt haben mit dem "lff 4711".
Nun sollte die Ausführung laufen bis zu diesem Punkt und Du solltest das Debugger Fenster sehen:
Anhang anzeigen 11704
Im oberen Bereich und am linken Rand siehst Du die wichtige Knöpfe:
Für Dich ist wichtig:
Oben:
Step over: Die Zeile, in der Du gerade bist, wird abgearbeitet und Du bist in der nächsten Zeile.
Step into: Es wird in einen Funktionsaufruf gesprungen und Du bist dann in der nächsten Funktion.
Step Out: Wenn Du in eine Funktion kommst, die Dich nicht interessiert, dann kannst Du damit die Funktion abarbeiten und bist dann wieder eine Ebene höher.
Links:
Resume Program - So der Breakpoint erreicht wurde und die Begleitumstände nicht so sind wie gedacht (hier würde es bedeuten: Du bist ohne Exception in die nächste Zeile gekommen), kannst Du damit den Debugger weiter laufen lassen. Dieser läuft dann, bis er wieder einen Breakpoint erreicht.
Stop: Debugger stoppen
Damit kannst Du jetzt also mit Step into schauen, was für Funktionen er aufruft und was er zurück gibt. Und das Problem, welches Du untersuchst, ist eine Null Pointer Exception (NPE), d.h. du versuchst auf einem null Wert etwas aufzurufen.
Sollte dieses step into zu schwer sein, dann kannst Du Dinge in mehrere Befehle aufteilen. Also z.B. ein
kannst Du umschreiben inJava:if (stringReturningFunction().equals("something")) { ... }
Wenn Du dann mit dem Debugger durchgehst, dann wird erst die Funktion aufgerufen und bist danach auf dem if. Und dann kannst Du im großen Bereich des Debuggers die Variable returnedValue ansehen....Java:String returnedValue = stringReturningFunction(); if (returnedValue.equals("something")) { ... }
Wenn Du dies machst: Erkennst Du, woher die NPE kommt? Wie kannst Du die verhindern?
Das Kommentar/Antwort-Verhältnis bezogen auf den Inhalt von @kneitzel / @Heyoka955 strebt irgendwie gegen @kneitzel. Wobei bezogen auf den Inhalt eher gegen Unendlich.Try catch?
throw new RuntimeException("Meine erste eigene Exception");
Soll er ganz nach unten und das behebt doch immernoch nicht den Bug genau? Oder willst du darauf du aufbauen.Ohh je. Java Grundlagen. Was eine Exception ist, sollte doch bekannt sein, gerade da doch in dem Code auch eine throw Anweisung enthan war.
==> Stell bitte sicher, dass Du genau weisst, was welcher Befehl macht! Mach ein paar kleine Tests!
Falls Du kein gutes Java Buch hast, gibt es online einiges, was frei und in Deutsch ist. So empfehle ich regelmäßig:
Inhaltsverzeichnis
openbook.rheinwerk-verlag.de
Und ein Test den Du dringen machen solltest: Starte mal eine Applikation die in der main Funktion nur folgenden Code hat:
Java:throw new RuntimeException("Meine erste eigene Exception");
Was siehst Du, wenn Du den Code ausführst?
Try catch?
Soll er ganz nach unten ner das behebt doch immernoch nicht den Bug genau?
ich mache das morgen aber leider bin ich gleich weg daher hab ich geraten.Nein!
Warum rätst Du anstatt Dich ernsthaft mit dem auseinander zu setzen, was man Dir sagt?
Wenn man Exceptions bekommt, weil man im Code grobe Fehler hat, dann bringt ein Abfangen nichts. Die Fehler raus machen wäre wohl deutlich besser! Also muss man erkennen, wie es zu dem Fehler kommt um dann diese Fehlersituation zu vermeiden!
Nein, vergiss den Rover. Als ersten Schritt musst Du Dein Halbwissen durch echtes Wissen ersetzen! So lange Dir Basiswissen fehlt wirst Du nicht weiter kommen, denn eine fertige Lösung dürftest Du von niemanden bekommen.Soll er ganz nach unten und das behebt doch immernoch nicht den Bug genau? Oder willst du darauf du aufbauen.
Jo ich lese mir das durch morgen und schaue das an.Nein, vergiss den Rover. Als ersten Schritt musst Du Dein Halbwissen durch echtes Wissen ersetzen! So lange Dir Basiswissen fehlt wirst Du nicht weiter kommen, denn eine fertige Lösung dürftest Du von niemanden bekommen.
Du studierst! Das bedeutet, dass Du selbständig Dir Wissen aneignen musst. Fang endlich damit an! Es gibt keine schnellen Wege. Du bist am studieren und das bedeutet, sich Wissen anzueignen. Und diese Aufgaben dienen dazu, euch etwas an die Hand zu geben. Also fang endlich an, die erkannten Wissenslücken zu schließen!
Tja, es hatte mal den Anschein, als ob da jetzt evtl. mal etwas von ihm kommt. Aber das war wohl nur eine Täuschung. Aber schauen wir mal, wie es dann weiter gehen wird. Aber mit seinen Versuchen "smart und schnell" zu sein, hat er wohl schon massiv Zeit vergeudet. Die Zeit von Anfang an richtig genutzt und er hätte deutlich mehr Wissen zu Java und er hätte dann wohl auch schon funktionierenden Code.Das Kommentar/Antwort-Verhältnis bezogen auf den Inhalt von @kneitzel / @Heyoka955 strebt irgendwie gegen @kneitzel. Wobei bezogen auf den Inhalt eher gegen Unendlich.
Jo ich lese mir das durch morgen und schaue das an.
Ich weiß ungefähr wie eine try catch Funktion und Throws funktionieren.
Aber ich würde gerne wissen ob der Fehler an meiner if Bedingung liegt als Tipp.Tja, es hatte mal den Anschein, als ob da jetzt evtl. mal etwas von ihm kommt. Aber das war wohl nur eine Täuschung. Aber schauen wir mal, wie es dann weiter gehen wird. Aber mit seinen Versuchen "smart und schnell" zu sein, hat er wohl schon massiv Zeit vergeudet. Die Zeit von Anfang an richtig genutzt und er hätte deutlich mehr Wissen zu Java und er hätte dann wohl auch schon funktionierenden Code.
Es geht nicht darum, ungefähr zu wissen, wie die funktionieren. try/catch brauchst du erst einmal nicht. "Exceptions should only happen on exceptional behaviour.". Die kannst Du bei einer Uni-Aufgabe größtenteils ignorieren. Also wenn jemand eine Zahl eingeben soll, aber text eingibt und du dann diesen versuchst zu einem int zu parsen: Dann steigt die Applikation halt aus. Du willst ein Textfile lesen und das ist nicht da oder du hast keine Rechte? Scheiss drauf. Bei einer Applikation wäre das wichtig, denn natürlich soll z.B. Word nicht einfach abstürzen, nur weil du eine Datei nicht lesen kannst. Aber darum geht es hier ja nicht.
Also schau Dir an, woher die Exception kommt und dann behebe den Fehler. (Bei den obrigen Beispielen würdest du halt korrekten Input liefern, die Datei an der richtigen Stelle anlegen oder für die notwendigen Rechte sorgen ....) Bei Dir sind es aber halt Fehler im Code, die Du erkennen und dann beheben musst.
Übrigens ein sehr gutes Beispiel für ein BestPractice, auf das ich dann nach Behebung des Fehlers kurz eingehen werde. Erinnere mich, so ich das vergessen sollte.
Aber ich würde gerne wissen ob der Fehler an meiner if Bedingung liegt als Tipp.
Weil vom Prinzip her müsste das richtig sein?
Ach, Du hast nur das @Heyoka955-Prinzip noch nicht verstanden:Tja, es hatte mal den Anschein, als ob da jetzt evtl. mal etwas von ihm kommt.
Die Kurzform: "Treibe die Massen an den Rande eines Nervenzusammenbruchs, dann wird die Lösung zu Dir kommen." (weil irgendjemand entnervt aufgibt und die Lösung postetOder willst du darauf du aufbauen.
else if (get(mars, p).equals("s") && !get(mars, new int[] {p[0],p[1]+1}).equals("#"))
Ach, Du hast nur das @Heyoka955-Prinzip noch nicht verstanden:
Die Kurzform: "Treibe die Massen an den Rande eines Nervenzusammenbruchs, dann wird die Lösung zu Dir kommen." (weil irgendjemand entnervt aufgibt und die Lösung postet)
Das ist der Coode an besagter Stelle. Für mich ist das "worst practise", da eine anzahl Anweisungen in einer Zeile stehen. Das muss man schon umschreiben(können), um den Fehler zu finden(, dessen Ursache aber woanders liegt)Java:else if (get(mars, p).equals("s") && !get(mars, new int[] {p[0],p[1]+1}).equals("#"))
/**
* Handles a given command.
* @param command to handle.
*/
public static void handleCommand(Command command) {
FieldContent roverDirection = map.get(roverPosition);
switch (command) {
case FORWARD:
roverPosition = move(roverPosition, true);
break;
case BACKWARD:
roverPosition = move(roverPosition, false);
break;
case TURN_LEFT:
roverDirection = turnLeft(roverDirection);
map.put(roverPosition, roverDirection);
break;
case TURN_RIGHT:
roverDirection = turnRight(roverDirection);
map.put(roverPosition, roverDirection);
break;
default:
System.out.println("Unknown command: " + command);
}
}
package rover;
/**
* Commands the rover understands
*/
public enum Command {
/**
* Move rover forward.
*/
FORWARD('f'),
/**
* Move rover backwards.
*/
BACKWARD('b'),
/**
* Turn rover right.
*/
TURN_RIGHT('r'),
/**
* Turn rover left.
*/
TURN_LEFT('l');
/**
* Command character used when submitting a command.
*/
private char commandChar;
/**
* Create a new instance of Command.
* @param commandChar Character to use to transfer the command.
*/
Command(char commandChar) {
this.commandChar = commandChar;
}
/**
* Gets the command character ot the command.
* @return Character used to transfer command.
*/
public char getCommandChar() { return commandChar; }
/**
* Get a Command instance from a command character.
* @param c Command character
* @return Command instance.
* @throws IllegalArgumentException if character is not a valid command chaarcter.
*/
public static Command fromChar(char c) {
for (Command command: Command.values()) {
if (command.getCommandChar() == c) return command;
}
throw new IllegalArgumentException("commandChar");
}
}
Na, das ist etwas krass. Ich kann ja verstehen, dass man da etwas genervt ist. Geht mir ja auch nicht wirklich anders. Aber wir sehen ja auch nur einen kleinen Ausschnitt. Software Entwicklung scheint nicht der Bereich zu sein, der ihn wirklich interessiert. Und er ist nicht wirklich jemand, der gut Kommunizieren kann. Und wenn er Antworten nicht versteht und nicht nachfragen kann weil es da auch schon etwas dran hapert, dann kann sowas dabei raus kommen. Aber da würde ich nicht zu viel hinein interpretieren. Ich denke er versucht einen schnellen Weg zu gehen und merkt nicht, was für Defizite er in Wirklichkeit hat. Er sieht nur diese erste Aufgabe und will nicht mehr Zeit investieren, als unbedingt notwendig. Nur das rächt sich sehr schnell, denn das ist ja erst der Anfang....Ich verstehe echt nicht wie ihr noch nicht die Geduld verloren habt. Die Antwort von @Heyoka955 auf @kneitzel s ausführliche und gute Hilfe ist eine Frechheit sondergleichen. So jemand hat keine Hilfe mehr verdient.
@Heyoka955 bezüglich der Frage ob du deinen Account löschen sollst. Ja bitte! Weiters steig aus dein Studium aus, das wird nix...
Um aus den Zeichen ein Command zu bekommen, braucht man auch keinerlei ifs/switches:
[...]
if (command.getCommandChar() == c) return command;
Oh mann ... jetzt muss ich mir meinen eigenen Code um die Ohren hauen. c? Was ist c für eine Variable?
Naja, da hat er ja schon anderes durchklingen lassen: Er will ja IT Projektleiter oder Consultant in der Software Entwicklung werden und da über 100k verdienen. Dieser Thread zeigt aber, dass es dazu niemals kommen wird.Software Entwicklung scheint nicht der Bereich zu sein, der ihn wirklich interessiert.
Ich dachte schon. Ich meine er hat auch irgendwo davon gesprochen als Werkstudent nebenbei wo in der Software Entwicklung zu beginnen. Tut mir leid, falls ich das falsch in Erinnerung habe.Er hat von Consultant gesprochen, aber hat er das auf Software Entwicklung präzisiert? Ich meine nicht. Und damit ist dann das ganze Spektrum offen. Und ich denke nicht, dass Software Entwicklung etwas ist, dass ihn reizt. Ansonsten hätte er sich da bereits ein entsprechendes Vorwissen angeeignet und es wäre gewisses Interesse da....
Aber wie dem auch sei: Soll mir / sollte uns eigentlich egal sein.