字符串和运行时错误。 (反转字符串中字符顺序的程序)

时间:2014-03-22 09:35:52

标签: java string

我正在尝试编写一个简单的程序来反转字符串最后两个字符的顺序。 (如果存在少于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

之前我遇到过这个问题,但我通常只是为了例外而对其进行编码。但是我觉得是时候我发现了如何彻底消除这个问题。

非常感谢任何帮助。 三江源。

3 个答案:

答案 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 - 2length - 1length -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));  
}