【发布时间】:2017-08-20 13:47:43
【问题描述】:
为什么会抛出错误?任何帮助将不胜感激
public class RAWS
{
public String rawsc(String ori)
{
String temp="";
for(int i=0;i<ori.length();i++)
{
char c=ori.charAt(i);
if(((c>=65)&&(c<=90))||((c>=97)&&(c<122)))
temp=c+temp;
}
for(int i=0;i<ori.length();i++)
{
char c=ori.charAt(i);
if(((c>=65)&&(c<=90))||((c>=97)&&(c<122)))
ori.replace(c, temp.charAt(i));
}
for(int i=0;i<ori.length();i++)
{
System.out.println(ori.charAt(i));
}
return(ori);
}
public static void main(String[] args)
{
String str="a,b$c";
RAWS ob=new RAWS();
String new1=ob.rawsc(str);
for(int i=0;i<new1.length();i++)
{
System.out.print(new1.charAt(i)+" ");
}
}
}
编辑:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:658)
at arraygs.RAWS.rawsc(RAWS.java:22)
at arraygs.RAWS.main(RAWS.java:30)
【问题讨论】:
-
什么错误????
-
抛出什么样的错误?你能提供堆栈跟踪吗?
-
回滚编辑:请将代码保留为问题正文中的文本,而不是图像。
-
只是对 Java 效率的提示:对于
temp变量,使用StringBuilder类及其append()方法,因为在字符串上重复使用+运算符会产生很多中间String 和 StringBuilder 实例(每次迭代一个)。 -
重组建议:您尝试在一种方法中做两件事,删除特殊字符并反转剩余字符串中的字符顺序。将其拆分为两种方法可能会使工作更容易。