array umkehren

Status
Nicht offen für weitere Antworten.

Unikate

Aktives Mitglied
Java:
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

Top Contributor
Das ist ein 2D-Array, du brauchst zwei Schleifen
Code:
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

Aktives Mitglied
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

Top Contributor
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

Aktives Mitglied
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

Top Contributor
Deine Lösung läßt sich nicht compilieren. Übrigens hast du 14 Arrays.
Code:
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

Aktives Mitglied
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
 

Dozor

Mitglied
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
 

Dozor

Mitglied
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]
 

Dozor

Mitglied
das ist doch das erhoffte ergebnis oder ?
Java:
     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

Aktives Mitglied
genau :D bei mir sieht es gerade so aus :

Java:
 X   X     
  X XXX    
    XXXX   
  XX XXXX  
 XXXX XXXX 
XXXXXX XXXX
 XXXXXX XX 
  XXXXXX   
   XXXXX X 
    XXX   X



UND JETZT hab ich das :D

Java:
 X         
 XX        
 XXX       
 XXXX      
 XXXXX     
 XXXXXX    
 XXXXXXX   
 XXXXXXXX  
 XXXXXXXXX 
 XXXXXXXXXX
 

Dozor

Mitglied
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

Aktives Mitglied
du fuchs :D

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?:D

:shock:
 
Zuletzt bearbeitet:

Marco13

Top Contributor
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
Java:
    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:
Java:
    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]);
        }
    }
:D
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben