Java/Array: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>Matthias Scharwies
(akt)
K (27 Versionen importiert)
(kein Unterschied)

Version vom 17. August 2019, 04:04 Uhr

Zur Konzeption

Unterrichtsidee
  • Es wird anhand von elementaren Methoden zum Umgang mit dem Array der Array erklärt. Man kann sich dabei auf Mathematik beziehen: x1, x2, x3.. xn als indizierte Variable sollte den Schülern bekannt sein.
  • Ein netter Vergleich für Neulinge ist ein "Schubladenschrank" mit nummerierten Schubladen.
  • Die Beispiele sind auf den Umgang mit BlueJ hin konzipiert und enthalten daher keine main Methode.
  • Es können Parallelen zum Alltag hergestellt werden: Wo nutzen Schüler privat so etwas wie einen Array (z.B. Karteikasten, Buch, Kalender, Handyadressbuch...).


Einstieg ins Thema

  • Hier findet sich ein Bildschirmfilm zum Thema Einstieg in Arrays in Java mit BlueJ.

Datenstrukturen

In der Informatik ist eine Datenstruktur eine bestimmte Art, Daten zu verwalten und miteinander zu verknüpfen, um in geeigneter Weise auf diese zugreifen und diese manipulieren zu können. Datenstrukturen sind immer mit bestimmten Operationen verknüpft, um eben diesen Zugriff und diese Manipulation zu ermöglichen.

Das Array ist die einfachste verwendete Datenstruktur. Es werden hierbei mehrere Variablen vom selben Basisdatentyp gespeichert. Ein Zugriff auf die einzelnen Elemente wird über einen Index möglich. (...) Im eindimensionalen Fall wird das Array häufig als Vektor und im zweidimensionalen Fall als Tabelle oder Matrix bezeichnet. Arrays sind aber keinesfalls nur auf zwei Dimensionen beschränkt, sondern werden beliebig mehrdimensional verwendet. Wegen ihrer Einfachheit und grundlegenden Bedeutung bieten die allermeisten Programmiersprachen eine konkrete Umsetzung dieser Datenstruktur als zusammengesetzten Datentyp Array im Grundsprachumfang an.


Wikipedia-logo.png Datenstruktur, Wikipedia – Die freie Enzyklopädie, 18.05.2006 - Der Text ist unter der Lizenz „Creative Commons Attribution/Share Alike“ verfügbar; zusätzliche Bedingungen können anwendbar sein. Siehe die Nutzungsbedingungen für Einzelheiten. In der Wikipedia ist eine Liste der Autoren verfügbar.



Ein erstes Beispiel

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)
  {
    return zahlenFeld[index];
  }  
}

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

private double[] zahlenFeld;

Das Kennzeichen hierfür sind die eckigen Klammern. 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.


Hinweis: Die Zählung eines Arrays beginnt bei 0, daher hat ein Array mit 10 Elementen den höchsten Index 9.

Greift man auf einen Index außerhalb des festgelegten Bereichs zu, so erhält man eine Fehlermeldung. Bei dem obigen Beispiel reicht es, den Index 10 zu wählen.

length

Jeder Array hat die Eigenschaft length, mit der die Länge des Feldes festgestellt werden kann.

  public int getLaenge()
  {
    return zahlenFeld.length;
  }

Ausgabe aller Werte

Die Ausgabe aller Werte eines Arrays lässt sich einfach mit Hilfe einer einfachen Schleife realisieren, die abbricht, wenn eine Zählvariable (in diesem Fall i) die Länge des Feldes erreicht hat. Denken Sie daran, dass i zunächst auf 0 und nicht auf 1 gesetzt werden muss.

  public void gibAus ()
  {
      int i=0;
      while(i<zahlenFeld.length){
         System.out.println("Index:"+i+" hat den Wert "+zahlenFeld[i]);
         i++;
      }
  }

Zufallszahlenfeld

  public void macheZufallsfeld (int maximum)
  {
      int i=0;
      while(i<zahlenFeld.length){
         zahlenFeld[i]=(int)(maximum*(Math.random()))+1;
         i++;
      }
  }

Die oben abgebildete Methode weist dem Feld Zufallszahlen (ohne Nachkommastellen) zu. Das ist sehr praktisch, wenn man das Feld nicht von Hand befüllen möchte. maximum gibt obere Grenze an. Die Zufallszahlen liegen also zwischen 1 und (einschließlich) maximum.


Was ist die größte Zahl im Feld

  public double getGroessteZahl ()
  {
      double maximum=zahlenFeld[0];
      int i=1;
      while(i<zahlenFeld.length){
         if (zahlenFeld[i]>maximum) {
            maximum=zahlenFeld[i];    
         }
         i++;
      }
      return maximum;
  }

Eine typische Aufgabe im Zusammenhang mit Arrays ist, die größte Zahl zu suchen (z.B. Maximaltemperatur bei einer Temperaturzeitreihe). Dabei geht man wie folgt vor:

  • Eine Hilfsvariable maximum bekommt den ersten Wert des Feldes zugewiesen.
  • Danach werden alle anderen Werte des Feldes durchlaufen und mit maximum verglichen.
  • Jedesmal, wenn ein größerer Wert gefunden wurde, wird maximum überschrieben.

Die folgenden Übungen sind alle ähnlich: Sie benötigen eine Schleife, Hilfsvariablen und zumindest bei 1 und 2 eine if-Abfrage.


Übung
  1. Lassen Sie in einer neuen Methode die kleinste Zahl im Feld suchen.
  2. Lassen Sie in einer neuen Methode den Index und nicht den Wert des größten Elementes zurückgeben.
  3. Lassen Sie in einer neuen Methode die Summe aller Zahlen im Feld zurückgeben.
  4. Lassen Sie in einer neuen Methode den Benutzer eine Zahl übergeben. Wenn die Zahl im Feld vorkommt, soll true zurückgegeben werden, wenn nicht false.


Linkliste

Einführungsbeispiel zu ARRAYs in Java: Prüfung eines EAN-Codes: Pdf20.gif Der EAN-Code