ErsetzenRekursiv.java |
1 /** 2 * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch 3 * Zeichenersetzung, rekursiv 4 */ 5 public class ErsetzenRekursiv { 6 public static void main(String[] args) { 7 8 String string = "aaabbcccccddd"; 9 10 // aus dem String mit 'toCharArray' ein neues Zeichenarray erzeugen 11 char[] zarray = string.toCharArray(); 12 13 // Ersetzung durchführen 14 ersetze ( zarray , 7, 'X' ); 15 16 // aus dem Zeichenarray mit 'valueOf' einen neuen String erzeugen und ausgeben 17 System.out.println(String.valueOf(zarray)); // Ergebnis: aaabbXXXXXddd 18 19 } 20 21 /** 22 * Ersetzung des Zeichen an der Position 'pos' durch 'zeichen', sowie 23 * der Zeichen davor und danach - bis ein anderes Zeichen angetroffen wird 24 */ 25 private static void ersetze ( char[] zeichenfolge, int pos, char zeichen ) { 26 27 char z = zeichenfolge[pos]; // das Zeichen an der Position 'pos' 28 29 // das Zeichen an der Position 'pos' ersetzen 30 zeichenfolge[pos] = zeichen; 31 32 // wenn es links davon noch ein Zeichen gibt und es mit z identisch ist: 33 if (pos > 0 && zeichenfolge[pos-1] == z) 34 // dieses ebenfalls ersetzen: rekursiver Aufruf 35 ersetze ( zeichenfolge, pos-1, zeichen ); 36 37 // wenn es rechts davon ein Zeichen gibt und es mit z identisch ist: 38 if (pos < zeichenfolge.length-1 && zeichenfolge[pos+1] == z) 39 // dieses ebenfalls ersetzen: rekursiver Aufruf 40 ersetze ( zeichenfolge, pos+1, zeichen ); 41 } 42 43 } 44