Hallo zusammen,
ich verstehe das hier Programm nicht so ganz.
Hier mal der Quellcode:
Das ganze soll einen String komprimieren. Was ich daran nicht verstehe ist:
Im ersten Durchlauf ist doch
immer true Wieso klappt es dann aber bei eine Folge wie z. B.
AAABBBBBBBC
das er auch wirklich 3x das A Printet?
1 IF = True
2 IF = False somit im else Zweig dort ist eine Schleife doch diese sollte auch nicht laufen da Count = 0 ist und j = 0 und die Bedingung ist ja j<count! 0<0 also nix läuft.
Dann setzt er den Count wieder auf 0. Somit fehlt doch ein A!
Kann mir das jemand erklären 🙁 Ich verstehe es nicht!
ich verstehe das hier Programm nicht so ganz.
Hier mal der Quellcode:
Java:
final char IMPOSSIBLE = '\0';
char marker = 'Z';
String input = "AAAAABBBBBBBBBC";
char last = IMPOSSIBLE;
int count = 0;
int compressAbove = 3;
for(int i=0;i<=input.length();i++) {
char chr = i < input.length()?input.charAt(i):IMPOSSIBLE;
if(chr != last || count == 9) {
if(count > compressAbove || last == marker)
System.out.printf("%c%d%c", marker, count,last);
else
for(int j=0;j<count;j++) {
System.out.print(last);
}
count=0;
}
last = chr;
count++;
}
Das ganze soll einen String komprimieren. Was ich daran nicht verstehe ist:
Im ersten Durchlauf ist doch
Code:
if(chr != last || count == 9) {
AAABBBBBBBC
das er auch wirklich 3x das A Printet?
1 IF = True
2 IF = False somit im else Zweig dort ist eine Schleife doch diese sollte auch nicht laufen da Count = 0 ist und j = 0 und die Bedingung ist ja j<count! 0<0 also nix läuft.
Dann setzt er den Count wieder auf 0. Somit fehlt doch ein A!
Kann mir das jemand erklären 🙁 Ich verstehe es nicht!