各位,要测试呀,不是靠自己想的是什么样,就是什么样的,
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);
}
}
|