Kurzeinstieg Java: Felder

Aus Wikibooks
Zur Navigation springen Zur Suche springen
Duke (Java mascot) waving.svg

Felder[Bearbeiten]

Felder (engl. Array) ist eine Zusammenfassung von mehreren Variablen desselben Datentyps zu einer gemeinsamen Struktur mit einem gemeinsamen Namen. Besonders am Feld ist, dass die Größe vom Programmierer fest vorgegeben wird und sich anschließend nicht mehr ändern kann. Der Zugriff auf die Daten im Array erfolgt per Index, wobei das erste Element den Index 0 hat.

Die Felder-Syntax kennen Sie schon aus einem früheren Beispiel:

...
 public static void main(String[] args)
...

hierbei bezeichnet String[] ein Feld, wobei jedes Element ein String ist.

 public class ArrayTest1
 {
   private double[] zahlenFeld;
  
   public ArrayTest1()
   {
     zahlenFeld = new double[10];   
   }
   
   public void setZahlInFeld(int index, double wert)
   {
     zahlenFeld[index]=wert;
   }
   
   public double getZahlInFeld(int index, int wert)
   {
     return zahlenFeld[index];
   }  
 }

Die Eigenschaft zahlenfeld wird als Array mit double-Elementen deklariert:

    private double[] zahlenFeld;

Das Kennzeichen hierfür sind die eckigen Klammern.
Hinweis: Was public und private bedeutet, wird im nächsten Kapitel erklärt.

Im Konstruktor wird dann ein neues Array mit 10 Elementen angelegt:

    zahlenFeld = new double[10];

Auf die einzelnen Elemente kann man mit Angabe des Index zugreifen:

    zahlenFeld[5]=27.3;

setzt beispielsweise zahlenFeld mit dem Index 5 auf den Wert 27,3.
So erklärt sich die get- und die set-Methode im obigen Beispiel. Natürlich muss bei einem Array noch der Index genannt werden, weshalb sich der Übergabeparameter index ergibt.

Der höchste Index eines Arrays mit 10 Elementen ist 9.

Greift man auf einen Index außerhalb des festgelegten Bereichs zu, so erhält man eine Fehlermeldung. Bei dem obigen Beispiel würde ein Zugriffsversuch auf den Index 10 bereits zu einem Fehler führen.

Größe des Feldes ermitteln[Bearbeiten]

Die Eigenschaft length speichert die Anzahl der Elemente eines Feldes.

   public static void main(String[] args)
   {
     String[] name = { "Hans", "Josef", "Peter" };
     for (int i = 0; i < name.length; i++)
     {
       System.out.println(i + "tes Element: " + name[i]);
     }
   }

Anwendungsbeispiel: Bestimmen des Maximums[Bearbeiten]

public class HelloWorld {
	public static double getGroessteZahl(double[] zahlenfeld){
		double maximum=zahlenfeld[0];
		for (int i=1; i<zahlenfeld.length; i++){
			if (zahlenfeld[i] > maximum){
				maximum=zahlenfeld[i];				
			}
		}
		return maximum;
	}
	
	public static void main (String[] args){
		double[] zahlenfeld;
		zahlenfeld = new double[8];
		zahlenfeld[0] = 1.4;
		zahlenfeld[1] = -5.2;
		zahlenfeld[2] = 0;
		zahlenfeld[3] = 123;
		zahlenfeld[5] = 123;
		zahlenfeld[6] = -1000;
		zahlenfeld[7] = 7;
		System.out.println("Das Maximum ist " + getGroessteZahl(zahlenfeld));
	}
}

Ausgabe:

Das Maximum ist 123.0

Mehrdimensionales Feld[Bearbeiten]

In Java werden mehrdimensionale Felder durch Felder realisieren welche als Elemente weitere Felder speichern.

int [][] multidimensional = new int [2][2];

In unserem Beispiel speichert ein mehrdimensionales Feld zwei Felder mit Platz für jeweils zwei Integer-Werte. Die Werte können wie schon bei einem eindimensionalen Feld mithilfe eines Index abgerufen, zugewiesen oder geändert werden. Der einzige Unterschied besteht darin, dass wir nun zwei Indizes verwenden müssen um einen Speicherplatz eindeutig zu beschreiben.

multidimensional[0][0] = 1;
multidimensional[0][1] = 2;
multidimensional[1][0] = 3;
multidimensional[1][1] = 4;

Mehrdimensionale Felder sind aber nicht auf zwei Dimensionen beschränkt, sondern lassen sich auf beliebig viele Dimensionen erweitern.

int [][][] multiMULTIdimensional = new int [2][3][2];
multiMULTIdimensional[0][0][0] = 785;
multiMULTIdimensional[0][0][1] = -15;;

Einsatzmöglichkeiten für mehrdimensionale Felder, sind zum Beispiel Raster.

boolean[][] grid = new boolean [10][10];
int x=4,y = 1;
grid[x][y] =true;

Ein solches Raster kann zum Beispiel für Binärbilder eingesetzt werden, bei welchem jeder Pixel nur die Farben schwarz oder weiß annehmen kann.