import java.util.Random; /** * Verschiedene Übungen zu Arrays. * * TODO: * Implementiere die Methoden nach der Beschreibung im jeweiligen * Kommentar. Teste deine Umsetzungen regelmäßig mit den Test-Methoden * in der Klasse {@link ArraysTest}. * * Du kannst die Methoden in beliebiger Reihenfolge implementieren. Such * dir also die für dich interessantesten raus. * * Einige Methoden sind schon vollständig implementiert, und können * als Beispiel dienen. Die Methoden {@link #printArray(int[])}, * {@link #printArray(String[])} und {@link #printArray(boolean[])} * geben ein Array auf der Kommandozeile aus und können bei der Fehlersuche * helfen. Denke auch daran, den Debugger zu nutzen. */ public class Arrays { // Interner Zufallsgenerator private Random rand; public Arrays() { // Neuen Zufallsgenerator erstellen rand = new Random(); } /** * Erstellt ein Integer-Array mit pNumberOfElements * zufällig gewählten Zahl-Elementen im Bereich pMin * bis pMax (exklusive). * * Wird ein negativer Wert für die Anzahl Elemente angegeben, * dann wird ein leeres Array zurück gegeben. * * @see #getRandomInt(int, int) */ public int[] generateIntArray( int pNumberOfElements, int pMin, int pMax ) { return null; } /** * Erzeugt eine Zufallszahl zwischen pMin * und pMax (exklusive). */ private int getRandomInt( int pMin, int pMax ) { return rand.nextInt(pMax-pMin)+pMin; } /** * Erstellt ein String-Array mit pNumberOfElements * Text-Elementen der Form String 1, String 2. * * Wird ein negativer Wert für die Anzahl Elemente angegeben, * dann wird ein leeres Array zurück gegeben. */ public String[] generateStringArray( int pNumberOfElements ) { return null; } /** * Erstellt ein Boolean-Array mit pNumberOfElements * zufällig gewählten Wahrheitswerten. * * Wird ein negativer Wert für die Anzahl Elemente angegeben, * dann wird ein leeres Array zurück gegeben. * * @see Random#nextBoolean() */ public boolean[] generateBooleanArray( int pNumberOfElements ) { if( pNumberOfElements < 1 ) { return new boolean[0]; } boolean[] result = new boolean[pNumberOfElements]; for( ; pNumberOfElements > 0; pNumberOfElements-- ) { result[pNumberOfElements-1] = rand.nextBoolean(); } return result; } /** * Sucht in einem Integer-Array das kleinste Element. * * Für ein leeres Array wird 0 zurück gegeben. */ public int min( int[] pArray ) { if( pArray.length == 0 ) { return 0; } int min = pArray[0]; for( int i = 1; i < pArray.length; i++ ) { if( pArray[i] < min ) { min = pArray[i]; } } return min; } /** * Sucht in einem Integer-Array das größte Element. * * Für ein leeres Array wird 0 zurück gegeben. */ public int max( int[] pArray ) { return 0; } /** * Berechnet die Summe aller Elemente in * einem Zahlen-Array. * * Für ein leeres Array wird 0 zurück gegeben. */ public int sum( int[] pArray ) { return 0; } /** * Berechnet den Mittelwert (average) eines * Integer-Arrays. * * Für ein leeres Array wird 0 zurück gegeben. */ public double avg( int[] pArray ) { return 0; } /** * Prüft, ob alle Elemente in einem Array von * Wahrheitswerten true sind. Sonst wird * false zurück gegeben. * * Für ein leeres Array wird false zurück gegeben. */ public boolean and( boolean[] pArray ) { return true; } /** * Prüft, ob mindestens ein Element in einem Array von * Wahrheitswerten true ist. Sonst wird * false zurück gegeben. * * Für ein leeres Array wird false zurück gegeben. */ public boolean or( boolean[] pArray ) { return true; } /** * Prüft, ob genau ein Element in einem Array von * Wahrheitswerten true ist. Sonst wird * false zurück gegeben. (Bei keinmal true * oder mehr als einmal true.) * * Für ein leeres Array wird false zurück gegeben. */ public boolean xor( boolean[] pArray ) { return true; } /** * Erzeugt aus einem String-Array einen neuen String, * in dem alle Elemente des Arrays hintereinander * verknüpft sind. * * Aus ["String 1","String 2"] wird "String 1String 2". * * (Der + Operator verknüpft zwei Strings miteinander: * "Foo" + "Bar" ergibt "FooBar".) * * Für ein leeres Array wird ein leerer String zurück gegeben. */ public String concat( String[] pArray ) { return ""; } /** * Erzeugt aus einem String-Array einen neuen String, * in dem alle Elemente des Arrays durch pSep getrennt * hintereinander verknüpft sind. * * Aus ["String 1","String 2"] wird mit dem Aufruf * pSep = ";" zum Beispiel "String 1;String 2". * * Für ein leeres Array wird ein leerer String zurück gegeben. */ public String join( String[] pArray, String pSep ) { return ""; } /** * Setzt vor jeden String im Array das Prefix pPrefix und gibt * das Array mit den veränderten Werten zurück. * * Aus ["String 1","String 2"] wird mit pPrefix = "+" * zum Beispiel ["+String 1","+String 2"]. */ public String[] prefix( String[] pArray, String pPrefix ) { return null; } /** * Erstellt ein neues String-Array, in dem die Elemente aus pArray * in umgekehrter Reihenfolge vorkommen. * * Aus ["String 1","String 2"] wird zum Beispiel * ["String 2","String 1"]. */ public String[] reverse( String[] pArray ) { return null; } /** * Zählt, wie viele Elemente im Zahlen-Array * größer als pValue sind. * * Für pArray = int[]{1,2,3,4,5} und * pValue = 3 wäre das Ergebnis dann * 2. * * Für ein leeres Array wird 0 zurück gegeben. */ public int over( int[] pArray, int pValue ) { return 0; } /** * Erstellt ein Integer-Array mit den ersten pNumberOfElements * Fibonacci-Zahlen. * * Die ersten sechs Fibonacci-Zahlen sind: 1,1,2,3,5,8,... * * (Wenn du nicht weißt, was die Fibonacci-Zahlen sind hilft Wikipedia.) * * Wird ein negativer Wert für die Anzahl Elemente angegeben, * dann wird ein leeres Array zurück gegeben. */ public int[] generateFibonacci( int pNumberOfElements ) { return null; } // Ausgabe-Methoden // Ab hier ist schon alles implementiert :) /** * Gibt die Elemente eines Integer-Array auf der Kommandozeile aus. */ public void printArray( int[] pArray ) { boolean first = true; // Nötig um nicht zu viele Kommata zu setzen // Zählschleife für den Durchlauf durchs Arrays for( int i = 0; i < pArray.length; i++ ) { // Kommata als Trenner if( !first ) { System.out.print(","); } else { first = false; } // Array-Element ausgeben System.out.print(pArray[i]); } } /** * Gibt die Elemente eines String-Array auf der Kommandozeile aus. */ public void printArray( String[] pArray ) { boolean first = true; // Nötig um nicht zu viele Kommata zu setzen // Zählschleife für den Durchlauf durchs Arrays for( int i = 0; i < pArray.length; i++ ) { // Kommata als Trenner if( !first ) { System.out.print(","); } else { first = false; } // Array-Element ausgeben System.out.print(pArray[i]); } } /** * Gibt die Elemente eines Boolean-Array auf der Kommandozeile aus. */ public void printArray( boolean[] pArray ) { boolean first = true; // Nötig um nicht zu viele Kommata zu setzen // Zählschleife für den Durchlauf durchs Arrays for( int i = 0; i < pArray.length; i++ ) { // Kommata als Trenner if( !first ) { System.out.print(","); } else { first = false; } // Array-Element ausgeben System.out.print(pArray[i]); } } }