【发布时间】:2012-10-03 13:12:31
【问题描述】:
我制作了一个程序来反转输入字符串的单词 有错误代码:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:String index out of range: 17 at java.lang.String.charAt(String.java:695) at Rev.main(Rev.java:14)
主程序代码为:
import java.io.*; class Rev { public static void main(String args[])throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter String"); String a=br.readLine(); a=" "+a+" "; int x=a.length(); String b; for(int z=a.length()-1;z>=0;z--) { if (a.charAt(z)==' ') { b=a.substring(z,x); System.out.print(b+" "); a=a.replace(b,""); } } }}
【问题讨论】:
-
你不应该在你的for循环中修改
a,因为for条件是基于它的。 -
您可能会发现 StringBuilder 是一个更好的起点。
-
Here is some discussion 在这个主题上提供了多个可能对您有所帮助的实现示例。
-
无论何时执行
a=a.replace(b,""),您的字符串都会缩短任意数量。您是否意识到此方法替换了字符串中所有出现的 b?但是,即使它只替换了一次,也会出现相同的错误。你必须彻底重新考虑你的循环。 -
@HyperAnthony 这是一个关于如何递归执行的问题。这是反转字符串的一种不好且不是很直观的方法。
标签: java