Hi Programmier Freaks,
ich studiere momentan im 1. semester Informatik und hänge gerade an einer aufgabe in Programmieren mit java/bluej.
Es geht in der Aufgabe um Arrays und Schleifen.
Die Fragen lauten:
Erstellen Sie in Ihrem Verzeichnis ein neues Projekt UmgangMitArrays.
a. Erstellen Sie in diesem Projekt eine neue Klasse ZahlenSpeicher, die ein Datenfeld mit einer Arrayvariablen zahlen vom Typ int enthält.
Verwenden Sie für die folgenden Aufgaben möglichst unterschiedliche Schleifenkonstrukte. Ihr Programmcode sollte dagegen robust mögliche Indexbereichsverletzungen sein. Testen Sie jede Teilaufgabe, bevor Sie zum nächsten Aufgabenteil gehen.
b. Die Arrayvariable zahlen soll im Konstruktor so initialisiert werden, dass das zugehörige Array 10 Zahlen speichern kann. Der Konstruktor soll außerdem das Array mit den Quadratzahlen von 12 bis 102 initialisieren.
d. Erstellen Sie eine Methode gibZahl(int index), welche die Zahl zurückgibt, die im Arrayelement mit dem Index index gespeichert ist.
f. Erstellen Sie eine Methode ersetzeZahl(int index, int neueZahl), welche die Zahl mit dem Index index durch die übergebene Zahl ersetzt.
h. Ergänzen Sie eine Methode entfernen(int index), welche die Zahl mit dem angegebenen Index aus dem Array entfernt und diese Zahl zurückgibt. Die restlichen Zahlen im Array sollen nachrücken.
i. Die Klasse soll ein zusätzliches Datenfeld anzahlZahlen erhalten, mit dessen Hilfe sie über die Anzahl der tatsächlich gespeicherten Zahlen Buch führt. Der Wert soll im Konstruktor gesetzt werden. Alle bisher erstellten Methoden sollen so verändert werden werden,
dass auch diese nur die tatsächlich im Array vorhandenen Zahlen benutzen.
j. Ergänzen Sie eine Methode hinzufügen (int zahl), mit der eine Zahl zu dem ZahlenSpeicher hinzugefügt werden kann. Die Methode soll eine Fehlermeldung ausgeben, sofern das Array bereits voll ist und keine weiteren Zahlen mehr aufgenommen werden können.
Hier mein Quelltext dazu:
import java.util.ArrayList;
/**
* Beschreiben Sie hier die Klasse ZahlenSpeicher.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class ZahlenSpeicher
{
private int [] zahlen;
/**
* Konstruktor für Objekte der Klasse ZahlenSpeicher
*/
public ZahlenSpeicher()
{
zahlen = new int [10];
for(int index =0 ; index<zahlen.length;index++)
{
zahlen[index] = (index+1) * (index+1);
}
}
/**
* c) Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
*
* @param y ein Beispielparameter für eine Methode
* @return die Summe aus x und y
*/
public void alleZahlenAusgeben()
{
for(int i =0; i <zahlen.length; i++)
{
System.out.println(zahlen);
}
}
/**
* d) Zahl soll zurückggeben werden, die im Arrayelement mit
* dem Index index gespeichert ist.
*/
public int gibZahl(int index)
{
if(zahlen[index]>=0)
{
return zahlen[index];
}
else if(zahlen[index]<zahlen.length)
{
return zahlen[index];
}
else
{
return 404;
}
}
/**
* e) Soll die größte Zahl ausgeben, die im Array gespeichert ist.
*/
public int groessteZahl()
{
int groesste=zahlen[0];
int i = 0;
while(i<zahlen.length)
{
if(zahlen>groesste)
{
groesste=zahlen;
}
i++;
}
return groesste;
}
/**
* e) Soll den index der groessten Zahl ausgeben.
*/
public int indexGroessteZahl()
{
int groesste=0;
int indexGroesste =0;
int i = 0;
while(i<zahlen.length)
{
if(zahlen>groesste)
{
groesste=zahlen;
indexGroesste=i;
}
i++;
}
return indexGroesste;
}
/**
* f) Soll Zahl mit dem Index, durch neue Zahl ersetzen
*/
public void ersetzeZahl(int index, int neueZahl)
{
zahlen[index]=neueZahl;
}
/**
* g) Reihenfolge Umkehren
*/
public void reihenfolgeUmkehren()
{
for(int i=0; i<zahlen.length/2;i++)
{
int a = zahlen;
zahlen = zahlen[zahlen.length - 1 - i];
zahlen[zahlen.length - 1 - i] = a;
}
}
public int anzahlZahlen(int index)
{
return zahlen[index];
}
}
MEIN PROBLEM:
bei der METHODE gibZahl(int index)
- die methode soll bei eingabe eines index's von 0 bis 9, die dazugehörige zahl zurückgeben (mit return)
und bei eingabe eines index's < 0 und > zahlen.length
einen fehler zurückgeben, wie z.b. 0000....oder so
doch bei mir tritt ein arrayIndexOutOfBounds ein.
was muss ich machen.
und bei der Methode ersetzeZahl(int index, int neueZahl)
und bei den aufgaben von h) bis j) habe ich keine ahnung.
würd mich sehr freuen, wenn mir jemand behilflich sein könnte.