Hallo Forum,
brauche Hilfe von euch und zwar geht es um diesen Quelltext:
Java:
publicstaticvoid main (String[]args){int i,j;String[][]Rhein=newString[645][965];for(i=0;i<Rhein.length;++i){for(j=0;j<Rhein.length;++j){Rhein[i][j]="~";System.out.print(" "+Rhein[i][j]+"\t");System.out.println();}}}
wir wollen das "~" in einer 2 dimensionalen Matrix dargestellt wird. Ungefähr so:
~~~~~~
~~~~~~
~~~~~~
~~~~~~
~~~~~~
Bei uns steht das untereinander und nicht nebeneinander
~
~
~
~
~ usw.
Ihr schreibt ja auch nach jedem print direkt nen println(), da isses doch klar dass er nach jedem Zeichen nen Zeilenumbruch einfügt oder nicht?
Teilt den Code am besten auf:
- Zuerst Array erstellen
- Array befüllen (2 for schleifen)
- Array ausgeben (2 for schleifen)
Und rückt den Code dabei vernünftig ein. So ist der Code unleserlich.
Hoffentlich hast du noch gesehen, dass ich in der zweiten Schleife auf [c]rhein.length[/c] und nicht [c]rhein.length[/c] überprüfe Sobald das Array nämlich in allen Dimensionen nicht mehr gleich gross ist, hast du dann deinen Spass.
Nach den Schleifen einfach [c]rhein[5][6] = '*'[/c] schreiben, oder falls es gleich in der Schleife sein soll, mit einem if. Das würde ich aber nicht empfehlen. Lieber zuerst die Grundstruktur ('~', ich nehm mal an das soll Wasser sein) und dann nach und nach Dinge (wle Land, Boote, ...) "reinzeichnen".
Ja genau.
So hatte ich es eigentlich auch versucht, hat aber nicht funktioniert.
Kannst du das vllt. mal wie in deinem beispiel oben etwas genauer zeigen, damit ich weiß wo der Fehler liegt?
Ich habe gerade erst mit dem programmieren angefangen und hab noch nicht so viel Ahnung.
Ich würd alles erst am Schluss ausgeben.
Und dann würde ich keine Strings, sondern chars verwenden. Zusätzlich könnte man noch eine Liste, also [c]List<List<Character>>[/c] statt [c]char[][][/c] verwenden.
Also irgendwie so:
Java:
char[][] rhein =newchar[645][965];// überall '~' einsetzen.for(int i =0; i < rhein.length; i++){for(int j =0; j < rhein[i].length; j++){
rhein[i][j]='~';}}// irgendwo andere Werte setzen
rhein[5][6]='*';// ausgebenfor(char[] reihe : rhein){for(char c : reihe){System.out.print(c);System.out.print('\t');}System.out.println();}
Wenn du es gleich ausgibst, warum füllst du dann überhaupt ein Array? Sieh dir meinen Code an. Schön schlank, schön getrennt. Füg einfach nach [c]// irgendwo andere Werte setzen[/c] beliebigen Code ein, welchen diese [c]*[/c] markieren lässt. Kann man auch wunderbar mit einer Schleife realisieren.
Also irgendwas wie
Java:
for(int i =1; i <=3; i++){int laenge =Integer.parseInt(JOptionPane.showInputDialog("Längenkoordinaten Wrack "+ i));int breite =Integer.parseInt(JOptionPane.showInputDialog("Breitenkoordinaten Wrack "+ i));
rhein[laenge][breite]='*';}
faetzminator ja das ist top ich wollte das eigentlich das so oft eingeben bis ich stop sage und wusste nicht wie ich das hinkriegen sollte aber das hilft mir richtig weiter !!!
Du kannst auch vor dem parsen in einen int einen Check machen, ob der eingegebene String null oder leer oder was auch immer ist. Da könntest du eine do-while-Schleife verwenden und dies als Abbruchkriterium implementieren.
hey faetzminator hast du dazu einen lösungsansatz oder ne seite wo man die jOptionPane methoden vernünftig erklärt sind... kennee bis jetzt nur default.... danke