ich habe mal wieder ein kleines Problem.
Und zwar habe ich aus einem Buch eine Übungsgabe lösen wollen, was ich nach meiner Meinung auch geschafft habe, aber irgendetwas läuft trotzdem schief!
Ich wollte einen Text einfach verschlüsseln, das könnt ihr ja auch aus dem Quellcode entnehmen.
Hier ist er
Java:
StringBuilder buf =newStringBuilder("III");publicclassHaupt{/**
* @param args
*/publicstaticvoidmain(String[] args){// TODO Automatisch generierter MethodenstubStringBuilder buf =newStringBuilder("III");for(int i =0; i < buf.length(); i++){if(buf.charAt(i)=='U') buf.setCharAt(i,'X');if(buf.charAt(i)=='A') buf.deleteCharAt(i);if(buf.charAt(i)=='E') buf.deleteCharAt(i);if(buf.charAt(i)=='I') buf.insert(i,'I');if(buf.charAt(i)=='O') buf.insert(i,'O');}System.out.println(buf.toString());}}
Nun, aber bei der compilierung, etstehen folgende Fehlermeldungen:
Java:
Exception in thread "main" java.lang.OutOfMemoryError:Java heap space
at java.util.Arrays.copyOf(Arrays.java:2894)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:117)
at java.lang.AbstractStringBuilder.insert(AbstractStringBuilder.java:1165)
at java.lang.StringBuilder.insert(StringBuilder.java:366)
at Haupt.main(Haupt.java:17)
Was habe ich falsch gemacht? Ich finde keinen Fehler....
Danke erstmal für eure Infos und Tipps, ich habe es mit dem zweiten StringBuilder probiert und es hat geklappt, es sind keine Fehler entstanden.
Jedoch irgendetwas stimmt trotzdem nicht:
Nach der Übersetzung wird immer noch der ursprüngliche Text angezeigt, aber kein umgewandelter, den ich in buf2 gespeichert habe.
Hier der Quellcode:
Java:
publicclassHaupt{/**
* @param args
*/publicstaticvoidmain(String[] args){// TODO Automatisch generierter MethodenstubStringBuilder buf =newStringBuilder("In Band 1");StringBuilder buf2 =newStringBuilder(buf.toString());for(int i =0; i >= buf.length(); i++){if(buf.charAt(i)=='U') buf2.setCharAt(i,'X');if(buf.charAt(i)=='A') buf2.deleteCharAt(i);if(buf.charAt(i)=='E') buf2.deleteCharAt(i);if(buf.charAt(i)=='I') buf2.insert(i,'I');if(buf.charAt(i)=='O') buf2.insert(i,'O');}System.out.println(buf2);}}
Und meine Ausgabe:
In Band 1
Irgendetwas ist falsch, und ich habe den Fehler immer noch nicht gefunden.
Könnt ihr mir weiterhelfen?
Ich glaube der Code macht aber immer noch das falsche. Müsste buf2 nicht am Anfang komplett leer sein? Dann brauchst du nur die codierten Buchstaben hinten anhängen:
publicclassHaupt{/**
* @param args
*/publicstaticvoidmain(String[] args){// TODO Automatisch generierter MethodenstubStringBuilder buf =newStringBuilder("In Band 1 des Grundkurses haben wir viel gelernt");StringBuilder buf2 =newStringBuilder("");for(int i =0; i < buf.length(); i++){if(buf.charAt(i)=='U') buf2.append('X');elseif(buf.charAt(i)=='A'){}elseif(buf.charAt(i)=='E'){}elseif(buf.charAt(i)=='I') buf2.append("II");elseif(buf.charAt(i)=='O') buf2.append("OO");else buf2.append(buf2.charAt(i));}System.out.println(buf2);}}
Aber ich bekommen nun nur noch lauter "I" ausgegeben, egal was ich als Parameter dem String übergebe