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