class strb1
{
static public void main(String a_[])
{
StringBuilder sb = new StringBuilder("Test");
StringBuilder sb1;
sb1 = sb.append("ing").append("a").substring(0); //Line 1
System.out.println(sb);
System.out.println(sb1);
}
}
Run Code Online (Sandbox Code Playgroud)
这个程序在第1行给出了编译器错误.这substring是StringBuilder类中的一个有效方法,所以我不确定我在这里缺少什么.有人能指出我的错误吗?
Jon*_*eet 15
substring确实是一个有效的方法 - 但它返回一个String引用,而不是一个StringBuilder,所以你不能分配返回值sb1.这应该工作:
String x = sb.append("ing").append("a").substring(0);
Run Code Online (Sandbox Code Playgroud)
然而,你应该也退后一步,并在错误信息再看看.确保你理解它的每一部分,并问自己为什么这不足以自己诊断问题的信息.这种自我评估应该帮助您在不咨询社区的情况下诊断未来的问题.(我相信很多人都很乐意提供帮助,但如果你能自己解决这个问题,对每个人来说都会更有效率.)
这里一个有用的技术是尽可能地减少问题的范围 - 所以我可能首先将它隔离到单个方法调用:
sb.append("ing").append("a");
sb1 = sb.substring(0);
Run Code Online (Sandbox Code Playgroud)
此时,当第二行标记错误时,不需要考虑.错误将是这样的:
Test.java:11: error: incompatible types
sb1 = sb.substring(0);
^
required: StringBuilder
found: String
1 error
Run Code Online (Sandbox Code Playgroud)
现在可以肯定的是,这不是世界上最清晰的错误信息,但鉴于该语句中没有其他用法String,它必须是该方法的返回值 - 您的文档也应该检查当然.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |