# mehrdimensinale Arrays



## leany (12. Nov 2011)

Hallo zusammen
Ich möchte aus einem zweidiemensionalen Array den Mittelwert ausrechnen, komme aber partout nicht weiter :rtfm:
import inout.*;
class Mittelwert
{

  public static void main ( String[] args )
  {
    int[][] array =   {{34,255,255,56},{127,204,11,34},{123,98,127,34},{34,34,127,17},{34,34,127,17}};   

    // Summe deklarieren und initialisieren
    int  summe = 0 ;

    // jedes Element des Arrays zur Summe hinzuaddieren
    for ( int index = 0; index < array.length; index++ )
    {
      summe =  summe + array[ index ] ;
    }

    if ( array.length > 0 )
    {
      System.out.println("Die Summe ist:   " + summe );
      System.out.println("Der Durchschnitt ist: " + summe / array.length  );
    }
    else
      System.out.println("Das Array enthält keine Elemente." );

  }
} 

Kann mir jemand helfen?
Danke 
Leany


----------



## XHelp (12. Nov 2011)

Setzt den Code mal in Java-Tags, so wie es ROT IN GROßEN BUCHSTABEN auf der Seite steht


----------



## ARadauer (12. Nov 2011)

Ein mehrdimensionales Array ist nix anderes als ein Array wo ein Array drinnen ist.
// jedes Element des Arrays zur Summe hinzuaddieren
ja das stimmt, aber dein Element ist ein Array ;-) Also über dieses Array nochmal in einer schleife drüber gehen..

zb so


```
for (int index = 0; index < array.length; index++) {
			for(int index2 = 0; index2 < array[index].length; index2++){
			summe = summe + array[index][index2];
			}
		}
```

natürlich ist dann die anzahl nicht array.length  sondern die summe der längen in einem array..

bitte nächstes mal java  tags verweden [ java] [/ java ]


----------



## leany (12. Nov 2011)

sorry bin neu und mit meinem Array schon überfordert...
Gelobe Besserung!


----------



## leany (12. Nov 2011)

jetzt fehlt mir noch der Median:


```
import inout.*;
class Mittelwert
{
  public static void main ( String[] args )
  {
    int[][] array =   {{34,255,255,56},{127,204,11,34},{123,98,127,34},{34,34,127,17},{34,34,127,17}};   
    int  summe = 0;
    int median = 0;
    for (int index = 0; index < array.length; index++) {
            for(int index2 = 0; index2 < array[index].length; index2++){
            summe = summe + array[index][index2];
            median = median + array[index][index2];
            }
    }
    if ( array.length > 0 )
    {
      System.out.println("Die Summe ist:   " + summe);
      System.out.println("Der Durchschnitt ist: " + summe / array.length);
      System.out.println("Der Median beträgt: " + median / array.length /20);
    }
    else
      System.out.println("Das Array enthält keine Elemente.");

  }
}
```

so hätte ich die summe durch die Anzahl geteilt. Ich müsste jetzt die Zahl auf Position 11 (+ 1 für die gerade Anzahl) dazurechnen und das ganze wieder durch 2 teilen.


----------



## XHelp (12. Nov 2011)

War das jetzt eine Frage, oder eine Aussage?


----------



## leany (12. Nov 2011)

das heisst, ich weiss zwar mathematisch wie, kann's aber nicht übertrage in java.


----------



## XHelp (12. Nov 2011)

Du weißt doch jetzt wie du ein Array durchlaufen kannst. Durchlaufe eben X-Positionen, bis du die gewünschte erreicht hast.


----------



## leany (12. Nov 2011)

XHelp hat gesagt.:


> Du weißt doch jetzt wie du ein Array durchlaufen kannst. Durchlaufe eben X-Positionen, bis du die gewünschte erreicht hast.


Ja, ich muss wohl das ganze sortieren und dann die vorher initialisierte Position x finden.
Wie sortiere ich?  median = Arrays.sort;
Wie finde ich Position x?


----------



## XHelp (12. Nov 2011)

Wieso sortieren? oO

```
int position = 0;
for (int i=0;i<array.length;i++) {
  for (int j=0;j<array[i].length;j++) {
    System.out.println(position+"tes Element: "+array[i][j]);
    potition++;
  }
}
```


----------



## leany (13. Nov 2011)

Das Problem ist, wenn Du nicht sortierts, wird einfach der Wert auf der xten Position genommen. Der Median ist aber der Punkt, an dem links davon 50% der Werte sind und rechts davon 50%.
Genau genommen muss ich dieses Script sortieren:

```
import java.util.*;
class Median2
{
  public static void main ( String[] args )
  {
    int[][] array =   {{22,0,4,2,62,262,25,2,86,7,21,6,9,2,1,5,11,45}};   
    int  summe = 0;
    int median = 0;
    int position = 0;
for (int i=0;i<array.length;i++)
 {
  for (int j=0;j<array[i].length;j++)
  {
    System.out.println(position+"tes Element: "+array[i][j]);
    position++;
  }
}
    for (int index = 0; index < array.length; index++)
{
            for(int index2 = 0; index2 < array[index].length; index2++){
            summe = summe + array[index][index2];
            median = median + array[index][index2]/2+1;
            }
    }
    if ( array.length > 0 )
    {
      System.out.println("Die Summe ist:   " + summe);
      System.out.println("Der Durchschnitt ist: " + summe / array.length);
      System.out.println("Der Median beträgt: " + median / array.length /18);
    }
    else
      System.out.println("Das Array enthält keine Elemente.");
 
  }
}
```


----------



## leany (13. Nov 2011)

Neue Version - hat immer noch einen Fehler;(


```
import java.util.*;      
      
public class Median3
{
  public static void main(String[] args)
  {
    int[] array =  {22,0,4,2,62,262,25,2,86,7,21,6,9,2,1,5,11,45};   
    for(int i=0;i<array.length;i++)     
    Arrays.sort(array);   
    
    for(int i=0;i<array.length;i++)
      System.out.println(array[i]);
       int median = 0;
       int anzahl = 0;
     if (anzahl % 2 != 0) 
     {
        median = array[(anzahl)/2];
     } 
else 
     {
        median =(array[anzahl/2-1] + array[anzahl/2])/2;
     }   
     System.out.println("Der Median beträgt " + median);
  }
}
```

in der Zeile 21.

Hat noch jemand eine Idee?

Danke für Eure Hilfe!!


----------



## Camill (13. Nov 2011)

Du erhälst eine ArrayIndexOutOfBoundsException da du versucht auf das Element mit dem Index -1 zuzugreiffen.

In Zeile 14 wird 
	
	
	
	





```
anzahl
```
 mit 0 initialisiert, in der if Abfrage kommst du in den else-Zweig da 
	
	
	
	





```
0 Modulo 2 = 0
```
 ergibt. Daraufhin Dividierst du durch 2 und Subtrahierst 1 sodass es zu dem Ergebnis von -1 kommt.

Du müsstest lediglich 
	
	
	
	





```
anzahl
```
 mit der Länge des Array initialisieren.


----------



## leany (14. Nov 2011)

Wieso auch in die Ferne schweifen, wenn das Gute liegt so nah!!!

Danke an allle!!


----------

