Skip to main content

Java Übung 28 – Welche Werte stecken im Array

Diese umfangreiche Java Übung ist eine weitere Übung zu Java Arrays.

Ich habe dafür schon ein kleines Beispiel vorbereitet.
Gegeben ist ein Array, welches Integer Werte speichert.

Der Java Code zum Array sieht so aus:


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[]= new int [5];
		arrayEins[1]=2;
		arrayEins[3]=18;
		arrayEins[0]=22;
		arrayEins[2]=21;
		arrayEins[4]=7;
		arrayEins[5]=8;
	}
}
  1. Lass dir alle Werte, welche sich im Array befinden auf der Konsole ausgeben.
    Achte auf die Reihenfolge und beginne beim kleinsten. (0 bis 4)
  2. Multipliziere das dritte Element mit dem zweiten Element des Arrays.
  3. Dividiere das erste Element durch das vierte Element. Achte dabei, auf Nachkommastellen.
  4. Falls das fünfte Element ein Teiler des dritten Elementes ist, dann soll die Bildschirmausgabe:
    „5. Element ist Teiler vom 3 .Element“ erscheinen.
    Andernfalls erscheint die Ausgabe „5. Element ist kein Teiler vom 3. Element“
  5. Ersetze den Wert des ersten Elementes durch die Zahl 127.

Zusatz:
Lagere alle Programmstrukturen in Methoden aus.
Die Methoden sollen das Array entgegennehmen und dieses dann entsprechend verarbeiten.
Implementiere also die Methoden:

  • liesArray
  • multipliziereArray
  • dividiereArray
  • istTeiler
  • ersetzeElement

 
Die letzte Methode „ersetzeElement“ verändert das erste Element.
Und dies hat Auswirkungen auf die Methode „dividiereArray“.

Deshalb sollen die Auswirkungen auch sichtbar werden.
Und darum soll die letzte Methode „ersetzeElement()“ die Methode „dividiereArray()“ mit neuen veränderten Wert aufrufen.
 
Na dann, wünsche ich dir viel Spaß bei dieser umfangreichen Java Übung zu den Arrays.
 
PS.
Wie du siehst, setzt sich diese Java Übung aus mehreren kleinen Übungen zusammen.
Du kannst jede Übung separat erledigen.
In der Lösung zur Übung fange ich selbst bei jeder Teilaufgabe immer wieder bei null an.


Wie ich bereits geschrieben habe, unterteile ich die Lösung dieser Java Übung in mehrere Abschnitte.

Zuerst das Wichtigste.
Das Element 5 ist kein Element des Arrays.
Das muss raus. Das Array umfasst 5 Elemente.
Und das sind die Elemente 0 bis 4.
 
Falls du das Element 6 arrayEins[5]=8; nicht löschst, bekommst du eine Fehlermeldung.
Und diese lautet: „java.lang.ArrayIndexOutOfBoundsException“.
 
Also lösche es oder kommentiere es aus, bevor du weitermachst.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[]= new int [5];
		arrayEins[1]=2;
		arrayEins[3]=18;
		arrayEins[0]=22;
		arrayEins[2]=21;
		arrayEins[4]=7;
		//arrayEins[5]=8; nicht Element des Arrays
 
	}
}

Beginnen wir mit der ersten Lösung
 

So kannst du die Elemente nach ihrem Index ausgeben.

Es gibt verschiedene Möglichkeiten.
 
Du kannst es mit einer einfachen Inkrementierung machen.
Dazu schreibst du einfach System.out.println(arrayEins[i]);.
Und dann lässt du i inkrementieren bzw. hochzählen. i++
 
So würde der Java Code aussehen:


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[]= new int [5];
		arrayEins[1]=2;
		arrayEins[3]=18;
		arrayEins[0]=22;
		arrayEins[2]=21;
		arrayEins[4]=7;
		//arrayEins[5]=8; nicht Element des Arrays
		 
		int i=0;
		System.out.println(arrayEins[i]);
		i++;
		System.out.println(arrayEins[i]);
		i++;
		System.out.println(arrayEins[i]);
		i++;
		System.out.println(arrayEins[i]);
		i++;
		System.out.println(arrayEins[i]);
		i++;
	}
}

Etwas eleganter wäre dies über eine Schleife zu lösen.
Zum Beispiel mit while Schleife.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[]= new int [5];
		arrayEins[1]=2;
		arrayEins[3]=18;
		arrayEins[0]=22;
		arrayEins[2]=21;
		arrayEins[4]=7;
		//arrayEins[5]=8; nicht Element des Arrays
		 
		int i=0;
		while (i<=4){
			System.out.println(arrayEins[i]);
			i++;
		}
	}
}

Die Schleifenbedingung lässt die Anweisung so oft ausführen, bis i =4 ist.
Und bei jedem Schleifendurchlauf wird das Element ausgegeben und i um eins erhöht.
 
Problem dabei ist, dass du eine lokale Variable i deklarieren musst, nur um zu zählen.
Die For Schleife hat diese bereits.
 
Der eleganteste Weg Arrays zu lesen, ist somit die for-Schleife.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[]= new int [5];
		arrayEins[1]=2;
		arrayEins[3]=18;
		arrayEins[0]=22;
		arrayEins[2]=21;
		arrayEins[4]=7;
		 
		 
		for (int i = 0; i<arrayEins.length; i++){
			System.out.println(arrayEins[i]);
		}
	}
}

Die For Schleife liest jetzt alle Elemente des Arrays und gibt deren Inhalt zurück.
Außerdem wurde als Abbruchbedingung eine Variable arrayEins.length vereinbart.
Diese Variable speichert die Länge des Arrays und du musst somit keine Zahlen einsetzen.
Das Ganze wird somit auch flexibler.
 
Kommen wir zur nächsten Aufgabe.
 

Die zweite Teilaufgabe dieser Java Übung bestand darin die Elemente des Arrays zu multiplizieren.

Ganz konkret solltest du das dritte Element mit dem zweiten Element multiplizieren.
 
Und so geht’s.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[]= new int [5];
		arrayEins[1]=2;
		arrayEins[3]=18;
		arrayEins[0]=22;
		arrayEins[2]=21;
		arrayEins[4]=7;
		 
	System.out.println(arrayEins[2]*arrayEins[1]);        
	}
}

Du kannst das Ergebnis natürlich auch in einer lokalen Variable speichern.
Und diesen Wert lässt du dir am Bildschirm ausgeben.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[] = new int[5];
		arrayEins[1] = 2;
		arrayEins[3] = 18;
		arrayEins[0] = 22;
		arrayEins[2] = 21;
		arrayEins[4] = 7;
 
		int produkt = arrayEins[2] * arrayEins[1]; //lokale Variable produkt
 
		System.out.println(produkt);
	}
}

Okay, läuft?
Na dann kommen wir zur nächsten Aufgabe.
 

In der dritten Teilaufgabe dieser Java Übung solltest du zwei Elemente dividieren.

Du solltest das erste Element durch das vierte Element dividieren.
 
Schau dir bitte einmal die Elemente 1 und 4 des Arrays an.
Diese wären 22 und 18.
22 geteilt durch 18 ist eine Kommazahl.
Im Array stecken aber nur Integer Werte.
 
Um jetzt eine Kommazahl zu erhalten, musst du casten.
Und so geht’s.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[] = new int[5];
		arrayEins[1] = 2;
		arrayEins[3] = 18;
		arrayEins[0] = 22;
		arrayEins[2] = 21;
		arrayEins[4] = 7;
 
		System.out.println((double)arrayEins[0]/arrayEins[3]);
	}
}

Na klappt?
Dann gleich zur nächsten Aufgabe.
 

Die vierte Aufgabe der Java Übung besteht darin, ein Element des Array auszuwerten.

Ganz konkret, solltest du das 5. Element prüfen, ob es Teiler des 3. Element ist.
Falls dies der Fall ist, soll die Bildschirmausgabe „5. Element ist Teiler vom 3 .Element“ erscheinen.
 
In einem if /else Block würde die Prüfung so aussehen:
(arrayEins[2]%arrayEins[4]==0)
Element 3 wird durch Element 5 geteilt. Es kommt ein Restwert heraus.
Falls dieser Restwert 0 ist, wird die nachfolgende Anweisung ausgeführt.
 
Und so sieht der ganze Java Code aus:


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[] = new int[5];
		arrayEins[1] = 2;
		arrayEins[3] = 18;
		arrayEins[0] = 22;
		arrayEins[2] = 21;
		arrayEins[4] = 7;
		 
		if (arrayEins[2]%arrayEins[4]==0){
			System.out.println("5. Element ist Teiler vom 3. Element");
		}
		else {
			System.out.println("5. Element ist kein Teiler vom 3. Element");
		}
	}
}

Natürlich könnte die Bedingung auch so aussehen.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[] = new int[5];
		arrayEins[1] = 2;
		arrayEins[3] = 18;
		arrayEins[0] = 22;
		arrayEins[2] = 21;
		arrayEins[4] = 7;
		 
		if (arrayEins[2]%arrayEins[4]!=0){
			System.out.println("5. Element ist kein Teiler vom 3. Element");
		}
		else {
			System.out.println("5. Element ist Teiler vom 3. Element");
		}
	}
}

Es wurde lediglich die Bedingung geändert.
Aus gleich wurde ungleich.
 
Und….
Wenn das fünfte Element des Arrays kein Teiler des dritten Elementes ist, dann wird der if Block ausgeführt, ansonsten der else Block.

Es ist genau das gleiche.
Nur eben anders formuliert.
 

Die letzte Teilaufgabe dieser Java Übung ist wieder etwas leichter.

Du sollst lediglich den Wert des ersten Elementes durch die Zahl 127 ersetzen.
 
Aus Kontrollzwecken lass ich mir dies wieder am Bildschirm anzeigen.


public class ArrayWerte {
 
	public static void main(String[] args) {
		int arrayEins[] = new int[5];
		arrayEins[1] = 2;
		arrayEins[3] = 18;
		arrayEins[0] = 22;
		arrayEins[2] = 21;
		arrayEins[4] = 7;
	 
		arrayEins[0]=127;
		System.out.println(arrayEins[0]);
	}        
}

Das war verhältnismäßig einfach, oder?
 

Kommen wir zur Zusatzaufgabe. Lagere alle Programmstrukturen in Methoden aus.

Die Methoden sollten statisch sein.
Schließlich möchtest du auf diese zugreifen, ohne ein Objekt erschaffen zu müssen.
 
Außerdem erwarten alle Methoden in der Parameterliste ein Array.
Und beim Aufruf in der Main-Methode übergibst du dann das Array an diese Methoden.
 
Da die Methoden lediglich Bildschirmausgaben erzeugen, genügt der Rückgabewert void.
 
Und so sieht der komplette Code zu dieser Java Übung aus.


 
public class ArrayWerte {
 
	/*
	 * Lösung zur Aufgabe 1
	 */
	static void liesArray(int[] arrayEins) {
		for (int i = 0; i < arrayEins.length; i++) {
			System.out.println(arrayEins[i]);
		}
	}
 
	/*
	 * Lösung zur Aufgabe 2
	 */
	static void multipliziereArray(int[] arrayEins) {
		System.out.println(arrayEins[2] * arrayEins[1]);
	}
 
	/*
	 * Lösung zur Teilaufgabe 3
	 */
	static void dividiereArray(int[] arrayEins) {
		System.out.println((double) arrayEins[0] / arrayEins[3]);
	}
 
	/*
	 * Lösung zur Teilaufgabe 4
	 */
	static void istTeiler(int[] arrayEins) {
		if (arrayEins[2] % arrayEins[4] == 0) {
			System.out.println("5. Element ist Teiler vom 3 .Element");
		} else {
			System.out.println("5. Element ist kein Teiler vom 3 .Element");
		}
	}
 
	/*
	 * Lösung zur Teilaufgabe 5
	 */
	static void ersetzeElement(int[] arrayEins) {
		arrayEins[0] = 127;
		System.out.println(arrayEins[0]);
		dividiereArray(arrayEins);// Aufruf der Division Methode mit neuen Wert
	}
 
	public static void main(String[] args) {
		int arrayEins[] = new int[5];
		arrayEins[1] = 2;
		arrayEins[3] = 18;
		arrayEins[0] = 22;
		arrayEins[2] = 21;
		arrayEins[4] = 7;
 
		liesArray(arrayEins); //Aufruf der Methode und Übergabe des Arrays
		multipliziereArray(arrayEins);
		dividiereArray(arrayEins);
		istTeiler(arrayEins);
		ersetzeElement(arrayEins);
	}
}

Ähnliche Beiträge

So unterstützen dich Java Vererbungstabellen beim Entwurf

Java Vererbungstabellen

Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von Säge bis Bohrmaschine. Wie machst […]

Der Aufbau von Java Klassen

Java Klassen Aufbau

Jedes Java Programm besteht aus Java Klassen. Doch wie sind diese aufgebaut? Wie setzt sich die Struktur zusammen? Wo befinden sich Klassen hierarchisch? Was kommt in die Klassen rein und wie wird es integriert? Das sind die Fragen, welche ich in diesem Artikel beantworten werde. Doch bevor wir bei den Klassen ansetzen, müssen wir eine […]

So verwendest du Inkrement und Dekrement Operatoren in deinen Java Programmen

Java Operatoren

In diesem Beitrag geht es um Java Operatoren. Ich möchte dir gern zwei neue Operatoren vorstellen. Diese nennen sich Inkrement und Dekrement. Ja was heißt das? Inkrementieren bedeutet eine schrittweise Erhöhung einer Zahl. Und dementsprechend bedeutet Dekrementieren: Die schrittweise Verminderung einer Zahl. Wozu brauchst du das? Stell dir vor. Du bekommst eine Liste mit Namen […]

So kannst du Java Arrays mit for Schleife füllen und auslesen

Java Arrays For Schleife

Wir haben in einem anderen Beitrag bereits über Java Arrays gesprochen. So ein Array speichert Zahlen, Texte oder Objekte in eine Art Liste. Und dann kannst du ganz bequem über den Index das Array füllen und die bereits enthaltenen Werte abrufen. Ganz bequem? So, wie ich dich aus dem letzten Beitrag entlassen habe, war das […]

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

So kannst du deine Eclipse Oberfläche anpassen

Eclipse anpassen

In diesem Beitrag möchte ich dir zwei ganz nette Features von Eclipse vorstellen. Es geht um Views und um Perspektiven. Wie du schon weißt, besteht Eclipse aus einer grafischen Oberfläche. Und in dieser Oberfläche stehen dir verschiedene Views zur Verfügung. Was ist so ein View?

Java Vererbung:
Die 3 Schablonen für deine Java Objekte

Java Vererbung Beispiel

Im letzten Beitrag habe ich dir das Java Vererbung Konzept an einem Beispiel vorgestellt. In dem Beispiel-Rollenspiel gab es Klassen zu Helden und Superhelden. Ich habe dir die Vererbungshierarchien theoretisch erläutert. Jetzt geht es ans Praktische. In diesen Beitrag lernst du: Wie du bestehende Java Klassen erweiterst Wie du Objekte aus den erweiterten Klassen erstellen […]

Der Java Datentyp boolean im Interview

Java boolean

Nein, ich bin nicht verrückt. Aber… Neulich traf ich zufällig den Java Datentyp boolean. 🙂 Er erklärte sich bereit, mir ein Interview zu geben. In diesem Interview geht es um die Werte, welcher dieser Wertetyp annehmen kann. Und in diesem Zusammenhang geht es auch um Logik. Also lassen wir uns doch die Logik vom direkten […]

Heap & Stack – Die Speicherverwaltung in Java

Java Speicher

Java nutzt eine interne Speicherverwaltung. Eigentlich sind es mehrere. Uns interessieren lediglich zwei. Da das Thema Speicherverwaltung recht umfangreich ist, habe ich dir im Folgenden einmal die wichtigsten Artikel zusammengestellt. Die zwei Speichersysteme von Java Java Methoden werden auf dem Stack gestapelt. Der Speicher auf dem Java Methoden zu Hause sind, nennt sich Stack Speicher. […]