Aufgabenstellung:
- Legen Sie eine von außen sichtbare Klasse Floats an, die ein float-Array werte und ein float
kleinstes als von außen nicht sichtbare Attribute hat.
Legen Sie in Floats einen von außen sichtbaren parametrisierten Konstruktor an, der das Attribut werte
mit dem übergebenen float-Array initialisiert.
- Implementieren Sie in der Klasse Floats eine Methode float kleinere(float x, float y), die
von x und y den Wert zurückgibt, der den kleineren Absolutwert (Betrag) hat. Verwenden Sie die in Java
verfügbare Methode float Math.abs(float z) zur Berechnung des Absolutwertes.
- Implementieren Sie nun in der Klasse Floats eine Methode void setKleinstes(), die dem Attribut
kleinstes den Eintrag in dem Array werte mit dem kleinsten Absolutwert zuweist. Verwenden Sie
hierzu die Methode kleinere.
- Implementieren Sie weiter eine Methode ausgabeRekursiv, die rekursiv die Werte aus dem Array
werte, beginnend mit dem als Parameter übergebenen Index bis zum letzten Element auf dem Bildschirm
ausgibt. Sie können davon ausgehen, dass nur gültige Indizes übergeben werden. Weiterhin soll
das kleinste Element kleinstes zuerst gesetzt und dann ausgegeben werden.
Legen Sie eine Test-Klasse TestFloats an:
– In der main-Methode sollen Sie ein Array definieren, welches Sie mit 10 Objekten vom Typ Floats
befüllen.
– Verwenden Sie hierfür eine Schleife (i = 0; 1; ...; 9) und übergeben Sie bei der Instanziierung der
Float-Objekte jeweils ein drei-elementiges float-Array gemäß der Bildungsregel ( 1.1f + i ,
- i*9.5f , 10 - i + 0.1f*i*i ), wobei in Java (float)2.2 und 2.2f äquivalent sind und
eine double-Variable zu einer float-Variable casten.
– Von dem Floats-Objekt im Array mit dem größten Index soll die Methode ausgabeRekursiv
aufgerufen werden, sodass alle Elemente und das kleinste Element auf dem Bildschirm ausgegeben
werden.
Mein Code:
[CODE lang="java" title="TestFloat"]public class TestFloat {
public static void main(String[] args) {
// Array mit 10 Objekten von Typ float
float[] array = new float[10];
// Befuellen mit Schleife
for (int i=0; i<array.length; i++) {
float [] floatArray = {(float)1.1+i,-i*(float)9.5,10-i+(float)0.1*i*i};
array= floatArray;
}
for (int i=0; i<array.length; i++) {
System.out.println(array);
}
}
}
[/CODE]
[CODE lang="java" title="Floats"]
public class Floats {
public float[] werte;
private static float kleinstes;
//parametrisierter Konstruktor
public Floats(float[] werte) {
this.werte=werte;
}
// Methode fuer Rueckgabe des Wertes mit kleinerem Absolutbetrag
public float kleinere (float x, float y) {
x = Math.abs(x);
y = Math.abs(y);
if (x >= y) {
return y;
} else {
return x;
}
}
// Methode setKleinstes
public void setKleinstes() {
kleinstes=kleinere(kleinstes, kleinstes);
}
// Methode fuer rekursive Ausgabe
public static void ausgabeRekursiv(float[] werte, int idx) {
werte[idx]=kleinstes;
if (idx+1 >= werte.length) {
System.out.print(werte[idx]);
} else {
System.out.print(werte[idx]);
ausgabeRekursiv(werte, idx++);
}
}
}
[/CODE]
Bei den unterstrichenen Teilen weiß ich irgendwie nicht weiter.. wo genau muss ich diesen 3-Elemente langen Array wieder übergeben?
Verstehe ich das überhaupt richtig, dass der kleinste Wert allgemein immer an erster Stelle stehen und der restliche Array einfach rekursiv ausgegeben werden soll? Allgemein an erster Stelle oder an der des übergebenen Index?
Wäre sehr dankbar für ein paar Denkanstöße..
- Legen Sie eine von außen sichtbare Klasse Floats an, die ein float-Array werte und ein float
kleinstes als von außen nicht sichtbare Attribute hat.
Legen Sie in Floats einen von außen sichtbaren parametrisierten Konstruktor an, der das Attribut werte
mit dem übergebenen float-Array initialisiert.
- Implementieren Sie in der Klasse Floats eine Methode float kleinere(float x, float y), die
von x und y den Wert zurückgibt, der den kleineren Absolutwert (Betrag) hat. Verwenden Sie die in Java
verfügbare Methode float Math.abs(float z) zur Berechnung des Absolutwertes.
- Implementieren Sie nun in der Klasse Floats eine Methode void setKleinstes(), die dem Attribut
kleinstes den Eintrag in dem Array werte mit dem kleinsten Absolutwert zuweist. Verwenden Sie
hierzu die Methode kleinere.
- Implementieren Sie weiter eine Methode ausgabeRekursiv, die rekursiv die Werte aus dem Array
werte, beginnend mit dem als Parameter übergebenen Index bis zum letzten Element auf dem Bildschirm
ausgibt. Sie können davon ausgehen, dass nur gültige Indizes übergeben werden. Weiterhin soll
das kleinste Element kleinstes zuerst gesetzt und dann ausgegeben werden.
Legen Sie eine Test-Klasse TestFloats an:
– In der main-Methode sollen Sie ein Array definieren, welches Sie mit 10 Objekten vom Typ Floats
befüllen.
– Verwenden Sie hierfür eine Schleife (i = 0; 1; ...; 9) und übergeben Sie bei der Instanziierung der
Float-Objekte jeweils ein drei-elementiges float-Array gemäß der Bildungsregel ( 1.1f + i ,
- i*9.5f , 10 - i + 0.1f*i*i ), wobei in Java (float)2.2 und 2.2f äquivalent sind und
eine double-Variable zu einer float-Variable casten.
– Von dem Floats-Objekt im Array mit dem größten Index soll die Methode ausgabeRekursiv
aufgerufen werden, sodass alle Elemente und das kleinste Element auf dem Bildschirm ausgegeben
werden.
Mein Code:
[CODE lang="java" title="TestFloat"]public class TestFloat {
public static void main(String[] args) {
// Array mit 10 Objekten von Typ float
float[] array = new float[10];
// Befuellen mit Schleife
for (int i=0; i<array.length; i++) {
float [] floatArray = {(float)1.1+i,-i*(float)9.5,10-i+(float)0.1*i*i};
array= floatArray;
}
for (int i=0; i<array.length; i++) {
System.out.println(array);
}
}
}
[/CODE]
[CODE lang="java" title="Floats"]
public class Floats {
public float[] werte;
private static float kleinstes;
//parametrisierter Konstruktor
public Floats(float[] werte) {
this.werte=werte;
}
// Methode fuer Rueckgabe des Wertes mit kleinerem Absolutbetrag
public float kleinere (float x, float y) {
x = Math.abs(x);
y = Math.abs(y);
if (x >= y) {
return y;
} else {
return x;
}
}
// Methode setKleinstes
public void setKleinstes() {
kleinstes=kleinere(kleinstes, kleinstes);
}
// Methode fuer rekursive Ausgabe
public static void ausgabeRekursiv(float[] werte, int idx) {
werte[idx]=kleinstes;
if (idx+1 >= werte.length) {
System.out.print(werte[idx]);
} else {
System.out.print(werte[idx]);
ausgabeRekursiv(werte, idx++);
}
}
}
[/CODE]
Bei den unterstrichenen Teilen weiß ich irgendwie nicht weiter.. wo genau muss ich diesen 3-Elemente langen Array wieder übergeben?
Verstehe ich das überhaupt richtig, dass der kleinste Wert allgemein immer an erster Stelle stehen und der restliche Array einfach rekursiv ausgegeben werden soll? Allgemein an erster Stelle oder an der des übergebenen Index?
Wäre sehr dankbar für ein paar Denkanstöße..