# Schachbrett mit Schleifen ausgeben



## paco89 (25. Jul 2012)

hallo, ich habe versucht folgende auffgabenstellung (s.Bild unten)zu programmieren, habe allerdings ein wenig probleme mit dem umgang mit Schleifen. es klappt nicht so wie ich will. ich habe folgenden code abgetippt:




```
public class Schleifen
{
 	static char[] arrayBuchstaben = new char [8];	
	static int [] arrayZahlen = new int [8];

    public static void main (String[] args){
		
	for(int i = 1; i <= 8 ; i++){
		for(int j = 1 ; j <= 8 ; j++){
			for(char c = 'A' ; c<= arrayBuchstaben.length ; c++){
				
				for(int z = 1; z<= arrayZahlen.length; z++){
					arrayBuchstaben[i] = c;
					arrayZahlen[j] = z;
					System.out.println(arrayBuchstaben[i] + "" + arrayZahlen[j] );
			}
		    }
		}
	}
		
    }	

}
```



es kompiliert zwar, aber es wird nichts angezeigt. vtl. habe ich das mit den schleifen auch ein wenig übertrieben...ich weiß es nicht. hat jmd. vtl. andere ansätze?


----------



## Gast2 (25. Jul 2012)

Die dritte for Schleife wird nie durchlaufen. 
	
	
	
	





```
'A'
```
 entspricht dezimal 65, und das ist schon größer als dein Array. Die Bedingung liefert also direkt false.


----------



## _-|-_ (25. Jul 2012)

Gucke mal:

```
for(int n = 8; n > 0; --n){
			for(char c = 'A'; c <= 'H'; ++c){
				System.out.print(""+c+n+" ");
			}
			System.out.println();
	}
```

Du hast 2 schleifen.
Die erste (
	
	
	
	





```
for(int n = 8; n > 0; --n)
```
) geht die Zahlen von 8 bis 1 durch.
Dan hast du eine zweite Schleife (
	
	
	
	





```
for(char c = 'A'; c <= 'H'; ++c)
```
), diese geht die Buchstaben von 'A' bis 'H' durch. 
Jetzt wird einfach kombiniert, jede zahl wird einmal mit allen Buchstaben ausgegeben.

Hoffe ich konnte helfen.


----------



## paco89 (25. Jul 2012)

ja, schon vielen dank für die hilfe, aber auf dem bild mussten die spalten ja nebeneinander sein. das kriege ich nicht hin.


----------



## nillehammer (26. Jul 2012)

> ja, schon vielen dank für die hilfe, aber auf dem bild mussten die spalten ja nebeneinander sein. das kriege ich nicht hin.


Dann vertausch einfach innere und äußere Schleife (also im Prinzip nur die Zeilen 1 und 2 aus _-|-_'s Code).


----------



## paco89 (26. Jul 2012)

Ich hab das jetzt umgeformt zu:


```
public class Schleifen
{
 	

    public static void main (String[] args){
		
	for(char c = 'A'; c <= 'H'; ++c){
		for (int n = 8 ; n>0; --n ){
			System.out.println("" + c + n +" ");
		}
		System.out.println();
	}
		
    }	

}
```

aber da kommt dasselbe raus.


----------



## hüteüberhüte (26. Jul 2012)

Also man geht schrittweise von links oben nach rechts unten, d.h., die äußere Schleife geht von 8 bis 1, die innere geht von 'A' bis 'H'. Innerhalb der Schleife erfolgt dann die Ausgabe


----------



## Swoop (26. Jul 2012)

Wenn du 
	
	
	
	





```
System.out.print()
```
 nutzt anstatt 
	
	
	
	





```
System.out.println()
```
 dann wird nicht nach jeder Zeile ein Zeilenumbruch gemacht!


----------



## tagedieb (26. Jul 2012)

hmm, bin ich mit Blindheit geschlagen? 
Der Code von _-|-_ funktioniert doch tadellos? Oder hab ich was übersehen?


----------



## faetzminator (26. Jul 2012)

```
for (int n = 8; n > 0; --n) {
    for (char c = 'A'; c <= 'H'; ++c) {
        System.out.printf("%c%d ", c, n);
    }
    System.out.println();
}
```
Nur ein Programm ohne "" ist ein gutes Programm


----------



## hüteüberhüte (26. Jul 2012)

Hier ist mein Vorschlag:


```
public static void main(String[] args) {
        StringBuilder b = new StringBuilder();
        for (int i = 8; i >= 1; i--) {
            for (char c = 'A'; c <= 'H'; c++) {
                b.append(c);
                b.append(i);
                b.append(' ');
            }
            b.deleteCharAt(b.length() - 1);
            b.append(System.getProperty("line.separator"));
        }
        System.out.print(b);
    }
```

Jetzt hat er drei zur Auswahl


----------



## faetzminator (27. Jul 2012)

hüteüberhüte, wollte ich zuerst auch bringen. Dann haben mich die 3 Zeilen gestört, hab über String.valueOf() nachgedacht und bin bei [c]printf()[/c] gelandet


----------



## hüteüberhüte (29. Jul 2012)

Schon 2 Tage her..., aber .printf sieht auch besser aus


----------

