字符串索引超出范围-java
这是什么意思?字符串的长度太长或我的代码中有错误字符串索引超出范围-java,java,Java,这是什么意思?字符串的长度太长或我的代码中有错误 public class Program { public static String flipEndChars(String s) { if(s.charAt(0) == s.charAt(s.length())){ return "Two's a pair."; } else if(s.length()<3){
public class Program {
public static String flipEndChars(String s) {
if(s.charAt(0) == s.charAt(s.length())){
return "Two's a pair.";
}
else if(s.length()<3){
return "incompatible";
}
else
return s.charAt(s.length()) + s.substring(1,s.length()) + s.charAt(0);
}
}
公共类程序{
公共静态字符串flipEndChars(字符串s){
如果(s.charAt(0)=s.charAt(s.length()){
返回“二是一对”;
}
否则,如果(s.length()此零件存在问题:
s.charAt(s.length())
它试图访问超出字符串长度的字符。索引是从零开始的,因此字符串的最后一个字符始终位于索引s.length()-1
string.charAt(int)
返回指定索引处的字符,其中0是第一个字符,1是第二个字符,2是第三个字符,依此类推
“hello”.charAt(0)
返回字符h
String.length()
返回字符串的长度。
“hello.length()
返回5
。因此,如果调用“hello.charAt(5)”
,这将得到字符串“hello”中不存在的第6个字符。这将抛出索引AutofBoundException
我希望这会有所帮助。最大索引是s.length()-1否,这意味着如果字符串有x个字符,则您正在尝试获取该字符串的x+1个(或更多)字符。就像尝试获取“get”s.charAt(s.length())的第四个字符一样。
将始终失败。s.charAt(0)当s
为空时,
将失败。索引从0开始,而不是从1开始。因此,第n个元素的索引将是n-1。因此,如果有M个元素,则最后一个索引将是M-1。也可能需要检查s.length()