我制作了一个程序来反转输入字符串的单词 有一个错误代码:
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,""); } } }
}
答案 0 :(得分:1)
如果Java专业人员需要解决您的问题,他只需要几行:
final List<String> words = Arrays.asList(input.split(" "));
Collections.reverse(words);
for (String word : words) System.out.print(word + " ");
System.out.println();
如果你这样做是为了练习并希望自己实现它,你仍然可以考虑使用相同的基本思想。例如,遍历您的字符串并将空格的所有位置收集到List<Integer>
。然后使用input.substring(list.get(i), list.get(i-1))
向后浏览该列表。
答案 1 :(得分:0)
也许你应该尝试:
int x=a.length()-1;
子字符串导致错误
答案 2 :(得分:0)
为什么不按空格分割输入并存储在数组中并反转数组?
答案 3 :(得分:0)
您知道您指定的字符串索引是错误的。你知道错误发生在哪里。添加System.out.println
调用以在错误语句之前以及代码中的其他关键点打印sting索引和字符串的长度。调试问题。
答案 4 :(得分:0)
我知道这不是你问题的答案,但为什么不尝试将StringBuilder或StringBuffer方法称为reverse()
StringBuilder sb = new StringBuilder("Hello");
sb.reverse();