Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Есть код на Java. Подсобите как исправить.

Илья Воеводин Знаток (490), закрыт 11 месяцев назад
Упакована строка @3X,@2Z,@2R,@5V,@2W, получить исходную строку. Должен получится ответ XXXZZRRVVVVVWW. Этот код выдаёт ответ @@@@@@@@@@@@@@. Умножает @ на цифру. А должен умножать цифру на символ. Если меняю @3X,@2Z,@2R,@5V,@2W на @X3,@Z2,@R2,@V5,@W2. То код работает.

public class Main
{
public static void main(String[] args)
{
String str = "@3X,@2Z,@2R,@5V,@2W";
String result = "";
int count = 0;
char letter = 0;
for (int i = 0; i < str.length(); i++)
{
char ch = str.charAt(i);
if (Character.isDigit(ch))
{
count = count * 10 + (int) (ch - '0');
} else {
if (count > 0) {
for (int j = 0; j < count; j++)
{
result += letter;
}
count = 0;
}
letter = ch;
}
}
if (count > 0) {
for (int j = 0; j < count; j++) {
result += letter;
}
}
System.out.println(result);
}
}
Лучший ответ
Оракул Оракул (59210) 11 месяцев назад
 import java.util.Arrays; 
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

public static void main(String[] args) {
String str = "@3X,@2Z,@2R,@5V,@2W";
String result = Arrays.stream(str.split(","))
.map(s -> {
String symbol = String.valueOf(s.charAt(s.length() - 1));
int count = Integer.parseInt(s.replaceAll("@", "").replaceAll(symbol, ""));
return Stream.generate(() -> symbol).limit(count).collect(Collectors.joining());
})
.collect(Collectors.joining());
System.out.println(result);
}
}
Илья ВоеводинЗнаток (490) 11 месяцев назад
Спасибо!!
Остальные ответы
Adil Molodezhnyi Мыслитель (7553) 11 месяцев назад
В чем вопрос?
Илья ВоеводинЗнаток (490) 11 месяцев назад
Чтобы из этого: @3X,@2Z,@2R,@5V,@2W. Получилось это: XXXZZRRVVVVVWW.
Код выдаёт ответ @@@@@@@@@@@@@@. Пример: @3X (выдаёт @@@), если @X3, то всё норм XXX.
Похожие вопросы