我正在尝试编写一个简单的程序来反转字符串最后两个字符的顺序。 (如果存在少于2个字符,我只按原样打印字符串)
这是我的代码,
if(text.length() == 1)
System.out.println(text);
else if(text.length() == 2)
System.out.println(text.substring(1) + text.substring(0,1));
else
System.out.println(text.substring(-2) + text.substring(-2,-1) + text.substring(-1));
当我尝试使用任何超过三个字符的输入运行程序时,我收到运行时错误。
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2
之前我遇到过这个问题,但我通常只是为了例外而对其进行编码。但是我觉得是时候我发现了如何彻底消除这个问题。
非常感谢任何帮助。 三江源。
答案 0 :(得分:3)
试试这个,
String str="Testing";
int len=str.length();
String rev = str.substring(0,len-2)+str.charAt(len-1)+str.charAt(len-2);
System.out.println(rev);
答案 1 :(得分:2)
您是否阅读过substring()
的javadoc?是否说它接受负面指数?它没有。
您想要的是从length - 2
到length - 1
和length -1 to length
的子串。您也可以简单地使用charAt()
,因为您想要提取单个字符。而text.length() == 2
的特殊情况是没用的。
答案 2 :(得分:0)
另一种选择:
if(text.length() < 2) {
System.out.println(text);
}
else {
char[] textArray = text.toCharArray();
char tmp = textArray[text.length() - 1];
textArray[text.length() - 1] = textArray[text.length() - 2];
textArray[text.length() - 2] = tmp;
System.out.println(new String(textArray));
}