mehrdimensinale Arrays

leany

Mitglied
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
 

ARadauer

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

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

Mitglied
jetzt fehlt mir noch der Median:

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

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

leany

Mitglied
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?
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Wieso sortieren? oO
Java:
 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

Mitglied
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:
Java:
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.");
 
  }
}
 
Zuletzt bearbeitet:

leany

Mitglied
Neue Version - hat immer noch einen Fehler;(

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

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

In Zeile 14 wird
Code:
anzahl
mit 0 initialisiert, in der if Abfrage kommst du in den else-Zweig da
Code:
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
Code:
anzahl
mit der Länge des Array initialisieren.
 

Neue Themen


Oben