StringBuilder, замени индекс на переменную

1

Как заменить индекс индекса? Я попробовал StringBuilder, проблема в том, что я хочу заменить индекс переменной:

  if (org == m2) {
    System.out.println(eingabe + " ist eine g\u00fcltige ISBN.");
  }
  else {

    if  (eingabe.length() ==13) {
        StringBuilder correct = new StringBuilder(eingabe);
        correct.setCharAt(13, m2);
        System.out.println(eingabe + " ist eine fehlerhafte ISBN. \nG\u00fcltig w\u00e4re " + correct);
    }
    else if (eingabe.length() ==18) {
        StringBuilder correct = new StringBuilder(eingabe);
        correct.setCharAt(18, m2);
        System.out.println(eingabe + " ist eine fehlerhafte ISBN. \nG\u00fcltig w\u00e4re " + correct);        
    }
  }

Ошибка следующая:

    isbn.java:36: error: method setCharAt in class AbstractStringBuilder cannot be applied to given types;
            correct.setCharAt(13, m2);
                   ^
  required: int,char
  found: int,int
  reason: actual argument int cannot be converted to char by method invocation conversion
isbn.java:41: error: method setCharAt in class AbstractStringBuilder cannot be applied to given types;
            correct.setCharAt(18, m2);
                   ^
  required: int,char
  found: int,int
  reason: actual argument int cannot be converted to char by method invocation conversion
Теги:
replace
stringbuilder

1 ответ

1
Лучший ответ

Ты должен сделать

correct.setCharAt(13, (char)m2);

вместо этого, поскольку 2-й аргумент setCharAt() должен иметь тип char. Неявное преобразование работает только для рекламных акций (конверсии от более узких к более широким типам, например, от char - 2 байта - до int - 4 байта), но не наоборот. В последнем случае вы должны сделать явное преобразование следующим образом: (typeName) variableName.

Кроме того, если ваша исходная String имеет длину 13, индекс последней позиции будет 12, а не 13, поскольку позиции нумеруются от 0, а не от 1. Таким образом, ваш вызов заменить последний символ должен быть:

correct.setCharAt(12, (char)m2);

в первом случае и аналогично во втором случае.

Надеюсь, это поможет!

  • 0
    теперь есть следующие ошибки: isbn.java:36: ошибка: ожидается «.class» isbn.java:36: ошибка: «;» ожидается isbn.java:36: ошибка: недопустимое начало выражения isbn.java:36: ошибка: ';' ожидается isbn.java:41: ошибка: ожидается ".class"
  • 0
    Ваш неправильный первый аргумент (позиция символа) в вашем setCharAt() - см. Мое редактирование.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню