【发布时间】:2013-12-31 17:54:48
【问题描述】:
我正在尝试解决如下问题:-
给定一个字符串,返回一个“向左旋转 2”的版本,其中前 2 个字符移动到末尾。字符串长度至少为 2。
left2("Hello") → "lloHe"
left2("java") → "vaja"
left2("Hi") → "Hi"
我为此写了两个函数:-
public String left2(String str)
{
String str1 = str;
if(str.length()>2)
str1 = str.substring(2)+str.substring(0,2);
return str1;
}
public String left2(String str)
{
return str.substring(2)+str.substring(0,2);
}
这两个函数都是正确的。我想知道如果substring() 函数的第一个参数是索引,那么我在第二个函数中没有得到overflow 错误吗?我问这个是因为 Java 不以 NULL 字符结尾,所以我认为第二个函数有错误。
【问题讨论】:
-
来自docs.oracle.com/javase/6/docs/api/java/lang/…: "抛出:IndexOutOfBoundsException - 如果 beginIndex 为负数或大于此 String 对象的长度。"
-
您尝试传递一个字符还是一个空字符串?
-
@kusur 这个链接解释了一切stackoverflow.com/questions/3233379/…
-
当您在
"hi"上执行str.substring(2)时,它会获取从“i”之后的位置开始并在字符串末尾结束的子字符串,也就是空格。