schachbrett aufbauen

Status
Nicht offen für weitere Antworten.

derweise

Aktives Mitglied
hallo. ich versuche gerade ein schachbrett aufzubauen, mit hilfe eins 2D-Arrays.
Der Index wird die Feldbezeichnung darstellen. Ich möchte, dass ich nun 2 Arrays habe, die das Schachbrett bilden.

Ich habe folgendes aufgebaut:

Java:
package uebung06;
import static gdi.MakeItSimple.*;
public class Aufgabe1 {
	
	public static void main(String[] args) {
		int [][] schachbrett = {{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8}};
		int i=0;
		int j=0;
		while (schachbrett [i][j]<8) {
			schachbrett[i][j]=0;
			println(schachbrett[i][j]);
			j++;
		}
		i=1;
		j=0;
		while (schachbrett [i][j]<8){
			schachbrett[i][j]=0;
			print(schachbrett[i][j]);
			j++;
		}
		
	}

}

Normalerweise müsste er mir doch nun 16 mal die "0" ausgeben, oder? Aber er gibt mir nur 14 mal die "0" aus? Wo liegt hier der Fehler? Durch das Ändern der Bedinung durch "<9" tauchen nur Fehler auf...
Ok eine antwort wäre ja, da die Bedingung nur 7 mal erfüllt ist, liefert er ja auch nur 7 mal die "0" pro Bedingung aus, also 14. Aber dann müsste doch bei Änderung auf "<9" alles funktionieren?
 
Zuletzt bearbeitet:

javimka

Top Contributor
schachbrett[0][0] ist ja bereits 1, das heisst, der Wert im Schachbrett ist immer eins höher als j. Wenn du 8 durch 9 ersetzt wird auch j auf 9 erhöht und führt natürlich zu einer ArrayIndexOutOfBoundsException
Mach aus deiner while-Schleife doch einfach [c]while (j<8)[/c] oder gleich eine for-Schleife.
 

javimka

Top Contributor
Wär wohl auch nicht verkehrt, wobei ich mir jetzt nicht sicher bin, ob derweise das extra macht, dass das Array ein int[2][8] ist, statt int[8][8]. Vielleicht eine spezielle Schach Variante ;)

//EDIT:
Durch int[8][8] hast du 64 Felder!
 

derweise

Aktives Mitglied
aso stimmt, es existert ja ein unterschied zwischen [2][8] und [8][8]...stimmt....dann muss man wohl für das brett die 2 variante benutzen oder? also dass jede zahl ein eigenes array ist?
 

javimka

Top Contributor
Verwende int[][] array = new int[8][8].
Jedes array[j] ist dann ein int[] der Länge 8.
Anders gesagt, du hast ein Array mit 8 Arrays drin, die auch wieder 8 Felder haben. Total 64.
 

javimka

Top Contributor
nein, das wäre äquivalent zu
{ {0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0} }
 

eRaaaa

Top Contributor
nein, das wäre äquivalent zu
{ {0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0} }

darauf wollte ich auch hinaus, die werte werden eh mit 0 initialisiert, also ist sowas wie schleife und schachbrett[j]=0; eig. nicht notwendig
 

derweise

Aktives Mitglied
asoo. mit 0. aber dafür brauche ich ja die schleifen....es geht ja nicht automatisch, wie eRaaaa es sagt :)
 

derweise

Aktives Mitglied
aah es geht doch ohne schleife....stimmt...wusste ich gar nicht. ist also eine art "gesetz" in java,dass arrays, dessen feldern kein wert zu gewisen wird, sie automatisch den wert "0" aufnehmen?
 

eRaaaa

Top Contributor
aah es geht doch ohne schleife....stimmt...wusste ich gar nicht. ist also eine art "gesetz" in java,dass arrays, dessen feldern kein wert zu gewisen wird, sie automatisch den wert "0" aufnehmen?

wie oben schon gesagt, bei primitiven werten wie int = 0, double = 0.0 ,boolean = false

bei objekten, sind sie null
 

Marco13

Top Contributor
Und wenn man das Spielfeld irgendwann wieder Löschen will, kann man sich mal die Methode Arrays.fill ansehen...
 

derweise

Aktives Mitglied
bei folgendem 2D-Array: int [][] schachbrett= new int[8][8];
Ich habe verschiedenen Feldernverschiedenen Feldern den Wert "2" zugewisen. Wenn ich nun das Schachbrett ausgeben möchte, gibt er mir im vertikal nur 7 anstatt 8 zeilen aus:

Java:
vertikal=0; 
		horizontal=7;
		while (horizontal>0) {
			while (vertikal<8) {
				print(schachbrett[vertikal][horizontal]);
				vertikal++;
			}
			println();
			vertikal=0;
			horizontal--;
		}

Folgendes gibt er mir aus:
00000002
00000020
00000200
00002000
00020000
00200000
02000000


Normalerweise müsste er mir unten noch eine Zeile ausgeben, wo die "2" dann ganz in der Ecke ist
 

eRaaaa

Top Contributor
probier mal: [c]while (horizontal>=0) {[/c]

aber wieso eig. die ganze zeit mit while? mach for schleifen, viel lesbarer und unkomplizierter :D
 
Zuletzt bearbeitet:

derweise

Aktives Mitglied
ah klappt! ok danke :) komisch habe schon einiges derartiges probert, kam bei mir aber immer index.out.of.bounds fehler...
naja, die while schleife kenne ich nun seit ca einem monat. die for erst seit ca 1,5 wochen...die while liegt mir halt mehr :)
 

javimka

Top Contributor
Eine for-Schleife würde so aussehen:
Java:
for (int vertikal=0;vertikal<8;vertikal++) {
  ...
}
Statt "vertikal" könntest du auch "v" nehmen, dann ist es noch etwas besser leserlich, finde ich.
 

derweise

Aktives Mitglied
Wenn man nun in Java eine Datei öffnet. Wo muss diese Datei gespeichert sein? Also in welchem Ordner auf dem PC, damit Eclipse sie lesen kann?
 

Ein Keks

Bekanntes Mitglied
1. Eclipse liest die datei nicht sondern dein programm
2. Du gibts den pfad an, also kannst du speichern wo du willst (natürlich würde sich der projektordner anbieten^^)
3. Stichwort: InputStream oder Scanner
4. Wofür brauchst du das eigentlich?^^
 

derweise

Aktives Mitglied
wir müssen die daten ( x und y wert auf dem brett) von einer datei lesen. ich habe eine textdatei erzeugt, in der dann einfach nur zahlen (pro zeile eine zahl) stehen. doch beim lesenkommt ein fehler, dass die datei rgendwie nicht gefunden wird.
zum testen habe ich das mal nur mit einer zahl gemacht:

Java:
int [][]schachbrett = new int [8][8];
        int zahl=0;
        String path = readLine();
        if(isFilePresent(path)){
            Object datei = openInputFile("Brett.txt");
            zahl=readInt(datei);
            closeInputFile(datei);
        }
        print (zahl);

bei path gebe ich folgendes ein:
C:\Dokumente und Einstellungen\f.ahmed\workspace


dann gibt er mir das aus:
Java:
Exception in thread "main" gdi.MISException: openInputFile(Brett.txt): Datei nicht gefunden
	at gdi.MakeItSimple.openInputFile(MakeItSimple.java:1040)
	at Dateilesen.main(Dateilesen.java:9)
 
Zuletzt bearbeitet:

javimka

Top Contributor
isFilePresent, openInputFile, closeInputFile sind keine Funktionen aus der Standartbibliothek. Was machen die? Programmierst du ein Applet, welches vielleich die Rechte nicht hat? Oder eine Applikation.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
B Schachbrett Java Basics - Anfänger-Themen 2
F Best Practice Schachbrett Läufer Java Basics - Anfänger-Themen 11
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
J Matrix für Schachbrett Java Basics - Anfänger-Themen 6
P Das Schachbrett - Reis Problem Java Basics - Anfänger-Themen 21
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
J Schachbrett mit Hilfe von while-Schleifen Java Basics - Anfänger-Themen 10
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
P Schachbrett Java Basics - Anfänger-Themen 7
P Schachbrett Spiel Nr. 01 Java Basics - Anfänger-Themen 17
P Schachbrett mit N x N Feldern Java Basics - Anfänger-Themen 11
B Schachbrett Java Basics - Anfänger-Themen 17
D Schachbrett frage Teil2 Java Basics - Anfänger-Themen 15
D Schachbrett frage Java Basics - Anfänger-Themen 3
I Springer auf Schachbrett Java Basics - Anfänger-Themen 18
M Schachbrett Java Basics - Anfänger-Themen 31
J Schachbrett Java Basics - Anfänger-Themen 6
B [Java] Schachbrett Frage Java Basics - Anfänger-Themen 11
G Socket Verbindung aufbauen Java Basics - Anfänger-Themen 11
W Erste Schritte Ein Spielfeld aufbauen/generieren Java Basics - Anfänger-Themen 1
D Können if Anweisungen aufeinander aufbauen? Java Basics - Anfänger-Themen 1
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
S Https Verbindung aufbauen zum File Download Java Basics - Anfänger-Themen 7
S if-Block dynamisch aufbauen Java Basics - Anfänger-Themen 5
lumo Applikation neu aufbauen? Java Basics - Anfänger-Themen 3
P Tree aus XML Daten aufbauen Java Basics - Anfänger-Themen 9
G JSF: Controls aufbauen bzw. ausblenden Java Basics - Anfänger-Themen 2
K Hier noch ein Konstruktor aufbauen Java Basics - Anfänger-Themen 6
R Java, Bluetooth: mit PC eine SPP Verbindung aufbauen Java Basics - Anfänger-Themen 1
G Verbindung zu einer Oracle DB aufbauen Java Basics - Anfänger-Themen 2
M Telnet Verbindung aufbauen Java Basics - Anfänger-Themen 2
J Tabelle mit mehreren Zeilen dynamisch aufbauen Java Basics - Anfänger-Themen 2
S JTree aktualisieren bzw. komplett neu aufbauen Java Basics - Anfänger-Themen 6
N SSH-Verbindung zu entferntem Rechner aufbauen Java Basics - Anfänger-Themen 5
G Programm modular aufbauen Java Basics - Anfänger-Themen 24

Ähnliche Java Themen

Neue Themen


Oben