我的要求非常简单,获取一个字符位置并将其替换为另一个
唯一的问题是,char
及其index
在运行时出现,无法进行硬编码。
我实际执行的虚拟代码:
public static void main(String args[])
{
StringBuilder sb = new StringBuilder("just going nuts") ;
System.out.println(" "+sb);
//System.out.println(sb.charAt(4)); //this works
sb.setCharAt(sb.indexOf((sb.charAt(4))), sb.charAt(0)); //line 8 -error line
System.out.println(" "+sb);
}
我甚至尝试将char
括在引号中:
sb.setCharAt(sb.indexOf(( "\""+sb.charAt(4)+"\"" )), sb.charAt(0));
但仍然是同样的错误
错误
line no:8: cannot find symbol
symbol : method indexOf(char)
location: class java.lang.StringBuilder
sb.setCharAt(sb.indexOf((sb.charAt(4))), sb.charAt(0));
我不是很流利的Java但是找不到具有动态值的setCharAt
函数示例,就像在这种情况下!!
答案 0 :(得分:6)
错误是因为indexOf
期待String
而不是char
所以您需要做的就是用String.valueOf
sb.setCharAt(sb.indexOf(String.valueOf((sb.charAt(4)))), sb.charAt(0));
输出
just going nuts
justjgoing nuts
当您键入甚至提供解决方案时,现代IDE应该捕获此编译时错误(在IntelliJ下面的情况下):
答案 1 :(得分:0)
尝试添加空字符串
sb.setCharAt(sb.indexOf((sb.charAt(4))+""), sb.charAt(0));
因为sb.indexOf()使用的不是字符串,而是字符串。