Программа по замене символов в строке java [требует правки]

185
05 марта 2018, 00:10

Нужно написать программу, которая в введенной пользователем строке заменяет все четные числа на соответствующее количество знаков +, нечетные числа - на соответствующее количество знаков -, а буквы h на слово hello.

Answer 1

Задача представляет собой интерес, как пример однопроходного парсера

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();
}
READ ALSO
Не записываются объекты в массив

Не записываются объекты в массив

Проблема с записью объектов в массив, которые создаются из полей вводимых в консоль или с выводом через метод getStatus();

175
Hibernate oneToMany

Hibernate oneToMany

Есть класс с таким полем

133
Вложенные итераторы

Вложенные итераторы

Добрый день решаю задачу про вложенные итераторы

161