Как заменить индекс индекса? Я попробовал 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
Ты должен сделать
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);
в первом случае и аналогично во втором случае.
Надеюсь, это поможет!
setCharAt()
- см. Мое редактирование.