黑马程序员技术交流社区
标题:
怎么会出现异常呢
[打印本页]
作者:
gaigai7
时间:
2014-5-7 17:54
标题:
怎么会出现异常呢
class StringTest
{
public static void main(String[] args)
{
String s = " abcd dert ";
MyTrim(s);
System.out.println(reverseString(s));
// System.out.println(s);
}
public static void MyTrim(String str)
{
int start = 0 ,end = str.length()-1;
while(start <= end && str.charAt(start) == ' ')
start++;
while(start <= end && str.charAt(end) == ' ')
end--;
String s = str.substring(start,end+1);
System.out.println(s);
}
public static String reverseString(String str)
{
char[] chs = str.toCharArray();
reverse(chs);
return new String(chs);
}
public static void reverse(char[] arr)
{
for (int start = 0, end = arr.length-1; start < end; start++,end--)
{
swap(arr,start,end);
}
}
public static void swap(char[] arr, int x, int y)
{
char temp = arr[x];
arr[x] = arr[y];
arr[y] = arr[temp];
}
}
作者:
NewDemo
时间:
2014-5-7 18:05
{:2_34:}先来看异常
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 32
at day3.Test1.swap(Test1.java:39)
at day3.Test1.reverse(Test1.java:32)
at day3.Test1.reverseString(Test1.java:25)
at day3.Test1.main(Test1.java:9)
ArrayIndexOutOfBoundsException是角标越界异常
再去看at day3.Test1.swap(Test1.java:39),找到代码的39行,发现arr[y] =arr[temp];写错了
改成arr[y] = temp;
所以,楼主必须要学会根据提示的信息去解决问题了。。
作者:
z1342802487
时间:
2014-5-7 18:06
你的swap方法写错了,temp 本身就是char可以直接赋值给 arr[y] 。
下面是该更后的swap方法
public static void swap(char[] arr, int x, int y)
{
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
复制代码
作者:
gaigai7
时间:
2014-5-7 21:20
z1342802487 发表于 2014-5-7 18:06
你的swap方法写错了,temp 本身就是char可以直接赋值给 arr[y] 。
下面是该更后的swap方法
...
哦哦 谢谢
作者:
嗯√低调〆
时间:
2014-5-7 21:25
学会调试很重要吧,写程序爆红不可怕,能调过来就好了
作者:
yemenglin
时间:
2014-5-7 21:30
用eclipse 一般在编写的时候哪里有问题都会报错,很好用的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2