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 ) { if(pNumberOfElements <1){ int[]randArray=new int[0]; return randArray; } int [] randArray=new int[pNumberOfElements]; for(int i=0;ipMin * 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 ) { if(pNumberOfElements <1){ String[]stringArray=new String[0]; return stringArray; } String [] stringArray=new String[pNumberOfElements]; for(int i=0;ipNumberOfElements * 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 ) { if( pArray.length == 0 ) { return 0; } int max = pArray[0]; for( int i = 1; i < pArray.length; i++ ) { if( pArray[i] > max ) { max = pArray[i]; } } return max; } /** * Berechnet die Summe aller Elemente in * einem Zahlen-Array. * * Für ein leeres Array wird 0 zurück gegeben. */ public int sum( int[] pArray ) { if( pArray.length == 0 ) { return 0; } int sum = 0; for( int i = 0; i < pArray.length; i++ ) { sum += pArray[i]; } return sum; } /** * Berechnet den Mittelwert (average) eines * Integer-Arrays. * * Für ein leeres Array wird 0 zurück gegeben. */ public double avg( int[] pArray ) { if( pArray.length == 0 ) { return 0; } double sum = 0; for( int i = 0; i < pArray.length; i++ ) { sum += pArray[i]; } return sum/pArray.length; } /** * 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 ) { if( pArray.length == 0 ) { return false; } for(int i=0;imindestens 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 ) { if( pArray.length == 0 ) { return false; } for(int i=0;igenau 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 ) { if( pArray.length == 0 ) { return false; } int sum =0; for(int i=0;i["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 ) { if( pArray.length == 0 ) { return ""; } String sum =""; for(int i=0;ipSep 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 ) { if( pArray.length == 0 ) { return ""; } String sum =""; sum = sum+pArray[0]; for(int i=1;ipPrefix 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 ) { if( pArray.length == 0 ) { return new String[0]; } for(int i=0;ipArray * in umgekehrter Reihenfolge vorkommen. * * Aus ["String 1","String 2"] wird zum Beispiel * ["String 2","String 1"]. */ public String[] reverse( String[] pArray ) { if( pArray.length == 0 ) { return new String[0]; } String[] reverse= new String[pArray.length]; for(int i=0;ipValue 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 ) { if( pArray.length == 0 ) { return 0; } int sum =0; for(int i=0;ipValue){ sum++; } } return sum; } /** * 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 ) { if( pNumberOfElements < 1 ) { return new int[0]; } int a = 0; int []fib=new int[pNumberOfElements]; fib[0]=1; for(int i=1;i