Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Im Gegensatz zu StringBuffer soll im Buffer die max.Länge der Zeichenketten begrenzt sein!
-> append hängt String s an Buffer an!Wenn nicht alle Zeichen von s Platz haben, sollen die überschüssigen Zeichen von s ignoriert werden!
Und ich weiß einfach nicht, wie ich das Problem mit den überschüssigen Zeichen lösen soll bzw. wie ich den String dann überhaupt in das char-Array reinschreiben kann!...
->man darf KEINEN StringBuffer verwenden!!
Kann mir bitte, bitte jemand helfen??
Wo íst da der Fehler bzw. weiß jemand, wies richtig geht?
Code:
public class Buffer{
protected char [] buf;
private int size; // Größe von buf
private int free; // noch freier Platz vielleicht static?
String s; // einzufügender String
public Buffer (int size){
this.size=size;
buf=new char [size];
}
public void append (String s){
if(buf.length==0){
System.out.println("Die Laenge des Arrays ist fuer eine moegliche Ausgabe zu kurz!");
}
else{
free=size-s.length(); // das passt auch irgendwie nicht! soll den freien Platz im Array berechnen!
for(int i=0;i<=buf.length;i++){
if(free!=0){
char [] buf=s.toCharArray(); // da ist auch ein Fehler drinnen!
/* oder ist besser?!?:
buf [i]=s.charAt(i+1); */
free--;
}
}
}
}
public String toString(){
String s=new String(buf, 0, size-free);
return s;
}
public static void main(String [] args){
Buffer b1=new Buffer(10);
b1.append("Thomas");
System.out.println(b1);
}
}
Bitte um schnelle Hilfe!
Danke im Voraus!
ciao,Tommy
class Buffer {
private char[] buf;
private int free;
public Buffer(int size) {
buf = new char[size];
this.free = size;
}
public void append(String s) {
int size = buf.length;
int iStringPos = 0;
while (free > 0 && iStringPos < s.length()) {
buf[size - free] = s.charAt(iStringPos);
free--;
iStringPos++;
}
}
public String toString() {
return new String(buf, 0, buf.length - free);
}
}
<Persönliche Meinung>Und nochwas: Nur weil Du im anderem Thread nicht die gewünschte Hilfe bekommen hast, finde ich es ziemlich unverschämt hier noch einen Thread zum gleichem Themas aufzumachen!</Persönliche Meinung>
IMHO ist es unnötig, free in der Schleife zu erhöhen (speedup):
Außerdem muß noch die neue Größe (size) neu berechnet werden...
Code:
if (buf.length==0)
System.out.println("Die Laenge des Arrays ist fuer eine moegliche Ausgabe zu kurz!");
else {
for(int i=size,j=0; i < buf.length && j < s.length(); i++,j++)
buf[i] = s.charAt(j);
// Neue Größe und Anzahl der freien Positionen im Puffer berechnen
size += s.length();
if (size > buf.length)
size = buf.length;
free = buf.length - size;
}