如何替换索引的特定索引?我尝试了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
答案 0 :(得分:1)
你应该做
correct.setCharAt(13, (char)m2);
相反,因为setCharAt()
的第二个参数应该是char
类型。隐式转换仅适用于促销(从较窄类型到较宽类型的转换,例如从char
- 2个字节 - 转换为int
- 这是4个字节),但不是相反。在后一种情况下,你应该做一个这样的显式演员:(typeName) variableName
。
此外,如果您的原始String
长度为13,则最后一个位置的索引将是12而不是13,因为位置从0开始编号,而不是从1开始编号。因此,您对替换最后一个符号的调用应该是:
correct.setCharAt(12, (char)m2);
在第一种情况下,类似地在第二种情况下。
希望有所帮助!