Meine Aufgabe ist es ein Programm zu schreiben, welches als Konsolenparameter einen String erhält, und den komprimierten String auf der Konsole ausgibt. Ich darf davon ausgehen, dass der Eingabestring nur Buchstaben enthält. Bei einer Eingabe von
aaabbcccccccabbbcbccc
wird die folgende Ausgabe erwartet:
a3bbc7ab3cbc3
Mein Code
ich habe zwei Probleme. Und zwar, die letzte Buchstabenserie sieht man nicht. Bei der Eingabe von "aabbbccc" kommt "aab3" raus. Ich weiß nicht warum die letzten Buchstaben fehlen. Und das zweite Problem ist die Fehlermeldung "String index out of range".
Freue mich auf eure Hilfe
aaabbcccccccabbbcbccc
wird die folgende Ausgabe erwartet:
a3bbc7ab3cbc3
Mein Code
Java:
import java.io.*;
public class String_komprimiert {
public static void main(String[] args) throws IOException{
String string;
BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter a string : ");
string = reader.readLine();
int counter; //count the number of repeated characters
int j; // increment for second loop
for (int i = 0; i < string.length(); i++)
{
j = i; //initialize j with the last value of i
counter = 1; //initialize counter for a new char
//count as long as the char at i equals the chars after it
while (string.charAt(i) == string.charAt(j+1) ){
counter++;
j++;
}
// if char repeated more than twice, print out the char
// with the number of repetition
if (counter > 2){
System.out.print(string.charAt(i));
System.out.print(counter);
i = j ;
}
// if less than 2 repetitions, just give out the chars
else
System.out.print(string.charAt(i));
}
}
}
ich habe zwei Probleme. Und zwar, die letzte Buchstabenserie sieht man nicht. Bei der Eingabe von "aabbbccc" kommt "aab3" raus. Ich weiß nicht warum die letzten Buchstaben fehlen. Und das zweite Problem ist die Fehlermeldung "String index out of range".
Freue mich auf eure Hilfe