# array umkehren



## Unikate (8. Dez 2009)

```
public class Matrix {
	
	public static void main (String[]args){
		
	char array [][] =
	{
		{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
    	{' ',' ',' ',' ',' ','X',' ',' ',' ',' ',' '},
		{' ',' ',' ',' ','X','X','X',' ',' ',' ',' '},
		{' ',' ',' ','X','X','X','X','X',' ',' ',' '},
		{' ',' ','X','X','X','X','X','X','X',' ',' '},
		{' ','X','X','X','X','X','X','X','X','X',' '},
		{'X','X','X','X','X','X','X','X','X','X','X'},
		{' ','X','X','X','X','X','X','X','X','X',' '},
		{' ',' ','X','X','X','X','X','X','X',' ',' '},
		{' ',' ',' ','X','X','X','X','X',' ',' ',' '},
		{' ',' ',' ',' ','X','X','X',' ',' ',' ',' '},
		{' ',' ',' ',' ',' ','X',' ',' ',' ',' ',' '},
		{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}
	};
	// Ausgabe
	for (int i = 0; i < array.length; i++)
	System.out.println(array[i]);
	//Invertierung
	for (int i = 0; i < array.length/2; i++){
		int x = array.length - 1 - i;
		int y = array[x];
		array[x] = array[i];
		array[i] = y;
		System.out.println(array[i]);
	}
   }		
}
```

Er zeigt mir ein Fehler bei:
int y = array[x];

und

array_ = y;

an.

Er hat konvertierungsprobleme. Aber bei array's castet man doch nicht oder?
Mein Ziel ist es die Ausgabe des Arrays umzukehren.

danke für die hilfe_


----------



## Marco13 (8. Dez 2009)

Das ist ein 2D-Array, du brauchst zwei Schleifen

```
for (int i=0; i<array.length; i++)
{
    for (int j=0; j<array[i].length; j++)
    {
        int x = array[i][j];
        array[i][j] = 123;
    }
}
```
Wenn der Array nur auf den Kopf gestellt werden soll geht's mit
int x[] = array_;_


----------



## Unikate (8. Dez 2009)

wenn ich das anwende was du da geschrieben hast, gibt er mir definitiv nicht das aus was in dem array gegeben ist. bei meiner variante ging das. da hat er genau das ausgegeben was im array drin steht.
nur die umkehrung funktionierte nicht.
also was bedeutet deine antwort?ist nicht richtig


----------



## Marco13 (8. Dez 2009)

Ich hab' ja auch nicht behauptet, deine Aufgabe gelöst zu haben - habe nur gezeigt, wie man mit 2D-Arrays rumhantiert :noe:

        int y[] = array[x];
        array[x] = array_;
        array = y;_


----------



## Unikate (8. Dez 2009)

oaky gut, aber warum gibt mir nach meiner lösung das ergebnis den inhalt des arrays aus?der gibt mir genau alle X aus in der anordnung (nur mithilfe einer schleife)?


----------



## Marco13 (8. Dez 2009)

Deine Lösung läßt sich nicht compilieren. Übrigens hast du 14 Arrays.

```
public class Matrix2 {

    public static void main (String[]args){

    char array [][] =
    {
        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
        {' ',' ',' ',' ',' ','X',' ',' ',' ',' ',' '},
        {' ',' ',' ',' ','X','X','X',' ',' ',' ',' '},
        {' ',' ',' ','X','X','X','X','X',' ',' ',' '},
        {' ',' ','X','X','X','X','X','X','X',' ',' '},
        {' ','X','X','X','X','X','X','X','X','X',' '},
        {'X','X','X','X','X','X','X','X','X','X','X'},
        {' ','X','X','X','X','X','X','X','X','X',' '},
        {' ',' ','X','X','X','X','X','X','X',' ',' '},
        {' ',' ',' ','X','X','X','X','X',' ',' ',' '},
        {' ',' ',' ',' ','X','X','X',' ',' ',' ',' '},
        {' ',' ',' ',' ',' ','X',' ',' ',' ',' ',' '},
        {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}
    };
    // Ausgabe
    for (int i = 0; i < array.length; i++)
    System.out.println(array[i]);
    //Invertierung
    for (int i = 0; i < array.length/2; i++){
        int x = array.length - 1 - i;
        char y[] = array[x];
        array[x] = array[i];
        array[i] = y;
        System.out.println(array[i]);
    }
   }
}
```
:bahnhof:


----------



## Unikate (8. Dez 2009)

nur der invetierungs-teil lässt sich nicht compilieren!wenn du den ausklammerst , dann geht es und er gibt mir das array aus.
wir haben das heute erst gelernt und ich hab noch keine ahnung wie das alles funktionieren soll XD


----------



## kn0b (8. Dez 2009)

du willst also alle ' ' zu 'X' und andersrum konvertieren??


----------



## Dozor (8. Dez 2009)

stimmt schon wäre interessant was du eigentlich für ne ausgabe erwartest

vor allem bei einem Spiegelgleichen zeichensatzob du nun Vertikal oder horizontal das invertierst kommt das gleiche raus.

Wie lautet den deine Aufgabenstellung überhaupt


----------



## Unikate (8. Dez 2009)

ja erst will ich alle X ausgeben und dann alle ' ' als X ausgeben.


----------



## Dozor (8. Dez 2009)

Wenn ich dich richtig verstanden habe, dann sollte das denk ich mal deine zweite for-Schleife sein.
[JAVA=26]
		for (int j = 0; j < array.length; j++) {
			// alle zeichen aus der j -zeile des arrays
			char y[] = array[j];
			for (int i = 0; i < y.length; i++) {
				if (y_ ==' ') {  // ' ' zu 'X'
					y='X';
				}else if (y=='X') {  // 'X' zu ' '
					y=' ';
				}				
			}
			// zurück schreiben ins urspuengliche array
			array[j] = y;
			System.out.println(array[j]);
		}
[/code]_


----------



## Unikate (8. Dez 2009)

jetzt hat er genau eine diagonale umgewandelt


----------



## Dozor (8. Dez 2009)

das ist doch das erhoffte ergebnis oder ?

```
X     
    XXX    
   XXXXX   
  XXXXXXX  
 XXXXXXXXX 
XXXXXXXXXXX
 XXXXXXXXX 
  XXXXXXX  
   XXXXX   
    XXX    
     X     
           
XXXXXXXXXXX
XXXXX XXXXX
XXXX   XXXX
XXX     XXX
XX       XX
X         X
           
X         X
XX       XX
XXX     XXX
XXXX   XXXX
XXXXX XXXXX
XXXXXXXXXXX
```


----------



## Unikate (8. Dez 2009)

genau  bei mir sieht es gerade so aus :


```
X   X     
  X XXX    
    XXXX   
  XX XXXX  
 XXXX XXXX 
XXXXXX XXXX
 XXXXXX XX 
  XXXXXX   
   XXXXX X 
    XXX   X
```



UND JETZT hab ich das 


```
X         
 XX        
 XXX       
 XXXX      
 XXXXX     
 XXXXXX    
 XXXXXXX   
 XXXXXXXX  
 XXXXXXXXX 
 XXXXXXXXXX
```


----------



## Dozor (8. Dez 2009)

Hier nochmal gesammt code:
[JAVA=1]
public class Matrix2 {

	public static void main(String[] args) {

		char array[][] = {
				{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
				{ ' ', ' ', ' ', ' ', ' ', 'X', ' ', ' ', ' ', ' ', ' ' },
				{ ' ', ' ', ' ', ' ', 'X', 'X', 'X', ' ', ' ', ' ', ' ' },
				{ ' ', ' ', ' ', 'X', 'X', 'X', 'X', 'X', ' ', ' ', ' ' },
				{ ' ', ' ', 'X', 'X', 'X', 'X', 'X', 'X', 'X', ' ', ' ' },
				{ ' ', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', ' ' },
				{ 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' },
				{ ' ', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', ' ' },
				{ ' ', ' ', 'X', 'X', 'X', 'X', 'X', 'X', 'X', ' ', ' ' },
				{ ' ', ' ', ' ', 'X', 'X', 'X', 'X', 'X', ' ', ' ', ' ' },
				{ ' ', ' ', ' ', ' ', 'X', 'X', 'X', ' ', ' ', ' ', ' ' },
				{ ' ', ' ', ' ', ' ', ' ', 'X', ' ', ' ', ' ', ' ', ' ' },
				{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' } };

		// Ausgabe
		for (int i = 0; i < array.length; i++)
			System.out.println(array_);
		// Invertierung
		invertierung(array);
	}

	public static void invertierung(char array[][]){
		for (int j = 0; j < array.length; j++) {
			// alle zeichen aus der j -zeile des arrays
			char y[] = array[j];
			for (int i = 0; i < y.length; i++) {
				if (y ==' ') {
					y='X';
				}else if (y=='X') {
					y=' ';
				}				
			}
			// zurück schreiben ins urspuengliche array
			array[j] = y;
			System.out.println(array[j]);
		}
	}
}
[/code]

Wenns geholfen hat ein Danke-Button wäre lieb ^^.

Viele Grüße
Dozor_


----------



## Unikate (8. Dez 2009)

du fuchs 

noch eine frage: wie kann ich mir das vorstellen mit den j- und i- zeilen?
weil im array wird ja nur X oder ' ' gespeichert als block. 
irgendwie kann ich mir das noch nich bildlich vorstellen. steht j für horrizontal und i für vertikal oder wie?

:shock:


----------



## Marco13 (8. Dez 2009)

Ja, so in etwa - das j ist die Zeile und das i die Spalte... auch im Hinblick auf einen meiner ersten Beiträge: Man hätte es auch

```
public static void invertierung1(char array[][]){
        for (int j = 0; j < array.length; j++) {
            for (int i = 0; i < array[j].length; i++) {
                if (array[j][i] ==' ') {
                    array[j][i]='X';
                }else if (array[j][i]=='X') {
                    array[j][i]=' ';
                }
            }
            System.out.println(array[j]);
        }
    }
```
schreiben können (das Zwischenspeichern und "zurückschreiben" ist nicht nötig - das sind eh nur Referenzen).

Noch eine Möglichkeit:

```
public static void invertierung(char array[][]){
        for (int j = 0; j < array.length; j++) {
            for (int i = 0; i < array[j].length; i++) {
                array[j][i] = (char)(120-array[j][i]);
            }
            System.out.println(array[j]);
        }
    }
```


----------

