folgende Aufgabe habe ich mir überlegt: ich habe char Array und möchte das x mal um das Zeichen y erweitern.
Hab das ganze mit Stringbuilder gemacht - war kein Problem.
Aber wenn ich das ohne machen will stecke ich fest :/
Habe eine Methode fill, die zuerst ein größeres Array erstellt, die Inhalte des alten kopiert und dann erweitert. Jedoch ist die Ausgabe immer "[C@42b1b4c3". Das bedeutet das Array hat keinen Inhalt oder?
Hier mein Code:
Java:
importjava.util.Scanner;importjava.util.Arrays;publicclass test {publicstaticvoid main (String args[]){Scanner sc =newScanner(System.in);String eingabe = sc.next();String word,c ="";int anzahl =0;char[] charSet = eingabe.toCharArray();while(sc.hasNext()){String command = sc.next();if(command.equals("fill")){
c = sc.next();
anzahl = sc.nextInt();System.out.println(fill(charSet, c.charAt(0), anzahl));}}}publicstaticStringfill(char[] charSet,char c,int anzahl){char[] newCharArray =newchar[charSet.length + anzahl];for(int i =0; i < charSet.length; i++){
newCharArray[i]= charSet[i];}for(int t = charSet.length; t < newCharArray.length; t++){
newCharArray[t]= c;}return newCharArray.toString();}}
Ist sicherlich nur eine Kleinigkeit aber ich finde sie leider nicht :bahnhof:
Wenn ich die Aufgabe erweitern will und einen beliebig langen String auf einer beliebigen Stelle einfügen will, komm ich komplett durcheinander
kann sich das kurz wer anschauen?
der Aufruf
Code:
if (command.equals("fillxy")){
word = sc.next();
stelle = sc.nextInt();
System.out.println(fillxy(charSet, word, stelle));
}
die Methode
Code:
public static String fillxy(char[] charSet, String word, int stelle){
char [] newCharArray = new char [charSet.length + word.length()];
char [] newInputCharArray = word.toCharArray();
for (int i = 0; i<stelle; i++){
newCharArray [i] = charSet [i];
}
for (int t = stelle; t<word.length(); t++){
newCharArray[t] = newInputCharArray[(t - stelle) + 1];
}
for (int z = stelle + word.length(); z < newCharArray.length; z++){
newCharArray[z] = charSet[z-stelle];
}
String str = Arrays.toString(newCharArray);
return str;
}
es kommt bei mir der Fehler IndexOutOfBoundsException daher ist sicher etwas bei meinen Arraygrößen Falsch :/ --> diesen Fehler hab ich grad selbst gelöst.
Allerdings wird jetzt in der Ausgabe nicht der String an der richtigen Stelle eingefügt, sondern leerzeichen.. ?
so viel Text nachträglich editieren kann gefährlich werden, wer nur das erste 'danke' sieht, bekommt vom Rest nichts mit
-------
mitmachen und nachprüfen heißt die Devise:
> for (int t = stelle; t<word.length(); t++){
womit beginnt t, wie lange läuft es, wie lang ist word?
mit System.out.println() kann man wunderbar verfolgen welche Schleife was konkret leistet in jedem Durchlauf
nein, das funktioniert nicht, wie ich doch gesagt habe?
das ist ja gerade der Originalcode von 11:57 bzw. editiert einiges später,
t beginnt mit 3 und endet bei < 3, die Schleife wird nicht durchlaufen
auch diese Schleife musst du z.B. von 0 bis word.length() laufen lassen
und dann exakt berechnen, welche Indexe danach in den Arrays benötigt werden