Я пытаюсь создать программу для распаковки строки, сжатой с использованием RLE. Однако программа декомпрессии должна записываться рекурсивно, без циклов и без объявления переменных вне метода. Ниже моя самая близкая попытка до сих пор, я могу получить первый «кусок» сжатой строки (например: 4w, q, g, J, 6y и т. Д.). После этого он просто ничего не распечатает, и мне трудно понять, почему. во многом благодаряПрограмма рекурсивной декомпрессии Java не заканчивается
public class StringRec{
public static void main(String[] a){
System.out.println("string: ");
String decomp = IO.readString();
System.out.println(decompress(decomp));
}
public static String decompress(String compressedText){
int count = compressedText.length();
String index = "";
if(count == 0){
return "";
}
я хотя бы сделать несколько условий, которые не называют метод распаковки снова , потому что условие для них является то, что они являются последней частью в строке, так что после того, как их часть распаковываются его сделанный. Естественно, что вызов будет происходить в конце среды выполнения, после того, как были вызваны другие условия с вызовом распаковки. Не уверен, почему он не работает.
else{
if(Character.isDigit(compressedText.charAt(0))){
String s = String.format("%0" + compressedText.charAt(0) + "d", 0).replace('0', compressedText.charAt(1));
index = s;
compressedText = compressedText.substring(2);
decompress(compressedText);
}
else if(Character.isDigit(compressedText.charAt(0)) && compressedText.length()==2){
String s2 = String.format("%0" + compressedText.charAt(0) + "d", 0).replace('0', compressedText.charAt(1));
index = s2;
}else if(Character.isLetter(compressedText.charAt(0))){
String s3 = Character.toString(compressedText.charAt(0));
index = s3;
compressedText = compressedText.substring(1);
decompress(compressedText);
}
else if(Character.isLetter(compressedText.charAt(0)) && compressedText.length()==1){
String s4 = Character.toString(compressedText.charAt(0));
index = s4;
}
return index;
}
}
Моих текущих догадок в том, что у него есть что-то делать с тем, как называется метод распаковки, или его проблема с тем, как я организую вывод должна быть возвращена после того, как метод распаковки уже называется, но потом я Wouldn Невозможно объяснить, как первая часть строки работает последовательно.
благодарственных вы так много! Это работает, и я думаю, что я понимаю, почему, но: в операторах возврата важно, чтобы он вернул строку, а затем снова активировал распаковку, или может ли эта часть работать, если распаковка была первой, а затем плюс строка –
Если вы напишите '' 'return dempress (...) + s;' '' и '' 'return decpress (...) + s3''', вы получите результат с обратным адресом. – saka1029