Ich habe eine Methode die einen gegeben (Double-) Array bei einem geben Index ändert. Wenn der Index noch nicht existiert (d.h. er ist größer als die Länge-1 vom übergeben Array) soll der Benutzer die Möglichkeit bekommen den Array entsprechend zu modifizieren: Der Array wird entsprechend länger gemacht (dazu verwende ich einen Hilfsarray der Art
), der Benutzer gibt den Zahlenwert beim neusten größten Index ein (geschickter Weise ungleich 0, ist der Wert von newdoublearray[newdoublearray.length-1]) die Zahlenwerte bei den Indexen wo der Hilfsarray größer ist als der alte werden auf null gesetzt, danach bekommt der Hilfsarray die Werte des Originalarrays zugewiesen. Anschließend wird der alte Array auf den Hilfsarray gesetzt. Also Beispiel mein Array a hat die Wert 4,5 und 2 und es wird als Index 6 eingeben und für den neuen Wert beim neuen Index 12 dann soll a nach der Mehtode die Werte 12,0,0,4,5 und 2 haben.
So habe ich das im Code geschrieben:
Aber diese Methode liefert den alten Array bei einen zu großen Index retour (wenn ich anlegen auf true angeben habe). Was mache ich falsch? (PS: Ich kann nicht einfach den Hilfsarray retour geben, da der Ursprungsarray verändert werden soll.) Das sind die Hilfsmethoden gibdouble und gibboolean:
Code:
double[] newdoublearray=new double[index];
So habe ich das im Code geschrieben:
Java:
private double[] changeByIndex( int index, double[] doublearray){
if(index<0){
System.out.println("Fehler gib einen Index groesser gleich 0 ein.");
return doublearray;
}else if(index>doublearray.length-1){
boolean anlegen=gibboolean("Ein so hoher Index existiert noch nicht. Willst du ihn anlegen?");
if(anlegen){
double[] newdoublearray=new double[index];
double a=gibdouble("Bitte gib eine Zahl ungleich 0 ein:");
while(a==0){
System.out.println("Fehler, bitte gib eine Zahl ungleich 0 ein.");
a=gibdouble("Bitte gib eine Zahl ungleich 0 ein:");
}
newdoublearray[(newdoublearray.length-1)]=a;
for(int z=(newdoublearray.length-2); z>0; z--){
if(z>newdoublearray.length-1){
newdoublearray[z]=0;
}else{
newdoublearray[z]=doublearray[z];
}
}
doublearray=newdoublearray;
return doublearray;
}else{
System.out.println("Fehler gib einen Index kleiner gleich "+(doublearray.length-1)+" ein.");
return doublearray;
}
}else{
double a=gibdouble("Bitte geben Sie eine Zahl ein:");
doublearray[index]=a;
return doublearray;
}
}
Java:
private boolean gibboolean(String d){
Scanner sc = new Scanner (System.in);
System.out.println(d+" Gib 'true' fuer ja und 'false' fuer nein ein.");
while (sc.hasNext() && !sc.hasNextBoolean()) {
sc.next();
System.out.println("Ungueltige Eingabe! Bitte gib 'true' oder 'false' ein.");
System.out.println(d);
}
boolean bolschevariable = sc.nextBoolean();
return bolschevariable;
}
private double gibdouble(String auf){
System.out.println(auf);
Scanner sc = new Scanner (System.in);
while (sc.hasNext() && !sc.hasNextDouble()) {
sc.next();
System.out.println("Ungueltige Eingabe! Bitte gib eine Zahl ein.");
System.out.println(auf);
}
double doublevar= sc.nextDouble();
return doublevar;
}
Zuletzt bearbeitet: