黑马程序员技术交流社区
标题:
代码出现异常,帮忙解决...
[打印本页]
作者:
汪平乐
时间:
2013-2-19 23:30
标题:
代码出现异常,帮忙解决...
本帖最后由 汪平乐 于 2013-2-20 12:07 编辑
import java.util.Arrays;
class BiStringTest13
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//建立String 的字符串对象 str
String s = "12 0 99 -7 30 4 100 13";
System.out.println("排序前:" + s);
//转化成int型的数组
String[] strarr = s.split(" ");
int[] arr = new int[strarr.length];
for (int x=0 ; x<strarr.length; x++ )
{
arr[x] = Integer.parseInt( strarr[x] );
}
//对int数组进行排序
Arrays.sort(arr);
//将排序的数组转变成String字符串并打印
String str = "";
for (int i : arr)
{
//将int类型数值转换为字符串
str += String.valueOf(i)+" ";
}
System.out.print("排序后" +str);
}
}
复制代码
在代码arr[x] = Integer.parseInt( strarr[x] );这句出现了NumberFormatException
异常,但strarr[]自己定义成String类型了,为什么还会出现字符串不能转换为适当格式呢?
未命名.jpg
(25.11 KB, 下载次数: 27)
下载附件
2013-2-19 23:30 上传
作者:
夏振博
时间:
2013-2-19 23:51
本帖最后由 夏振博 于 2013-3-13 00:40 编辑
{:soso_e188:}
作者:
qq646742615
时间:
2013-2-19 23:51
有个 空格 不能转换成Integer类型 你好像打了两个空格
作者:
胡发友
时间:
2013-2-20 08:44
各位,要测试呀,不是靠自己想的是什么样,就是什么样的,
1、按照上面两位的回答,是第21行: arr[x] = Integer.parseInt
( strarr[x] )
;出了问题,说是parseInt方法里多加了两个空格,
但是我要说的是,parseInt它只是转换strarr[x]这个值,跟外面的空格根本就不相干,
2、那现在我把这行注释掉,重新编译,运行的结果是:[12,
,
0, 99, -7, 30, 4, 100, 13],大家看到没,切割后的数组元素是这样,
第二个元素是空,也就是说,在进行切割时,没有把空格切完,所以导致了,在进行paseInt解析时报了异常,因为parseInt不能接 收空值;
.NumberFormatException: For input string: ""
提示的也是这样提示的;
3、我把切割的条件该成了: String[] strarr = s.split(" +");,表示可以切一个或多个空格;
4、重新编译,运行的结果:E:\work\day01>java BiStringTest13 排序前:12 0 99 -7 30 4 100 13
转换成数组后: [12, 0, 99, -7, 30, 4, 100, 13]
排序后-7 0 4 12 13 30 99 100
修改后的代码为:
import java.util.Arrays;
class BiStringTest13
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//建立String 的字符串对象 str
String s = "12 0 99 -7 30 4 100 13";/
/这行的12与0之间多敲了一个空格;
System.out.println("排序前:" + s);
//转化成int型的数组
String[] strarr = s.split(" +");//把这里稍微修改,就Ok;
int[] arr = new int[strarr.length];
for (int x=0 ; x<strarr.length; x++ )
{
arr[x] = Integer.parseInt( strarr[x] );
}
//对int数组进行排序
Arrays.sort(arr);
//将排序的数组转变成String字符串并打印
String str = "";
for (int i : arr)
{
//将int类型数值转换为字符串
str += String.valueOf(i)+" ";
}
System.out.print("排序后" +str);
}
}
作者:
汪平乐
时间:
2013-2-20 12:07
收到了,自己不仔细只看27行了,没看,谢谢各位大侠!
作者:
朱玉玺
时间:
2013-2-20 21:55
所以,切的时候,最好像板凳一样,用正则表达式,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2