Нужно написать программу, которая в введенной пользователем строке заменяет все четные числа на соответствующее количество знаков +
, нечетные числа - на соответствующее количество знаков -
, а буквы h
на слово hello
.
Задача представляет собой интерес, как пример однопроходного парсера
StringBuilder finalizeNum(StringBuilder src, StringBuilder dst) {
int len = src.length();
if (len > 0) {
byte lastNum = Byte.parseByte(String.valueOf(src.charAt(len - 1)));
char filler = (lastNum % 2 == 0) ? '+' : '-';
char[] pad = new char[len];
Arrays.fill(pad, filler);
dst.append(pad);
src.setLength(0);
}
return dst;
}
String convert(String str) {
StringBuilder res = new StringBuilder();
StringBuilder num = new StringBuilder();
boolean word = false;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
switch (ch) {
case ' ':
finalizeNum(num, res).append(ch);
word = false;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (!word || num.length() > 0)
num.append(ch);
else
res.append(ch);
word = true;
break;
case 'h':
res.append(num).append("hello");
num.setLength(0);
word = true;
break;
default:
res.append(num).append(ch);
num.setLength(0);
word = true;
}
}
return finalizeNum(num, res).toString();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задание из 5 главы книги Head Firs:Java
Проблема с записью объектов в массив, которые создаются из полей вводимых в консоль или с выводом через метод getStatus();