黑马程序员技术交流社区

标题: String类型转换有点疑问,来师兄师弟师姐师妹师傅哇~ [打印本页]

作者: 小马过河    时间: 2013-12-13 02:04
标题: String类型转换有点疑问,来师兄师弟师姐师妹师傅哇~
需求:有一个字符串:"55 65 45 75 35",请想办法把字符串中的数据排序,最终要的结果是"35 45 55 65 75"。
题是解出来了,只是在转换数组的时候产生了困扰,拜过个位师兄了{:soso_e137:}
问题1:
StringBuffer里面进行截取是会产生一个新的字符串。而字符串“55 65 45 75 35”在切割完空格后是产生一个新的字符串还是对本身的字符串做出修改呢?
问题2:
字符串str“55 65 45 75 35”包含空字符也是一个整体,为什么转成字符串数组strArray.length的长度为5呢?不应该是1嚒?


public class IntegerTest {
        public static void main(String[] args) {
                //定义个字符串
                String str = "55 65 45 75 35";
                //字符串变成字符串数组并切掉空格
                String[]strArray=str.split(" ");
                //建立一个int数组容器用来接收数据
                int[] arr=new int [strArray.length];
                //对int数组进行循环
                for (int x = 0; x < arr.length; x++) {
                        arr[x]=Integer.valueOf(strArray[x]);//数组对应位置的值赋值
                }
                //完整赋值后进行排序,Arrays类要导包
                Arrays.sort(arr);
                //排序完整后,还要将这个int类型的数组转成字符串,建立StringBuffer容器
                StringBuffer sb=new StringBuffer();
                for (int i = 0; i < arr.length; i++) {
                        if (i==arr.length-1) {
                                sb.append(arr);
                        }else {
                                sb.append(arr+" ");
                        }
                }
                System.out.println(sb);
        }
}
{:soso__8992476148226831620_5:}




作者: 小马过河    时间: 2013-12-13 02:06
为什么我的字体好扭~~{:soso__10613299921339608993_7:}
作者: chensc    时间: 2013-12-13 08:16
学习学习!
作者: ζ丶凡σ    时间: 2013-12-13 08:54
学习了.............
作者: 路国强    时间: 2013-12-13 09:43
额.......
作者: 胡永城    时间: 2013-12-13 17:05
本帖最后由 胡永城 于 2013-12-13 17:50 编辑

为什么你的阿狸好
作者: 简★零度    时间: 2013-12-13 17:19
我也想知道,阿里阿里!为什么可以那么大!
作者: 笑脸不在    时间: 2013-12-13 19:13
问题1答:解释 String[] strArray=str.split(" ");                即使用split函数将str字符串按照" "进行分割,将分割后产生的字符串数组返回并赋值给了strArray;
                也就是说,split并没有改变字符串str本身,即str还是{"55 65 45 75 35"};
                验证方式:
                      在 String[] strArray=str.split(" ");后面打印str即可:System.out.println(str);//输出结果为55 65 45 75 35
                所以字符串“55 65 45 75 35”在切割完空格后是产生一个新的字符串,而不是对本身的字符串做出了修改
问题2答:
                第一步:细致解释split函数
                单参数的 split(String sign):API说明:该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法
两参数的split(String sign,int limit):依据给定的分隔符sign对字符串分割limit次(具体可查看API文档)
“55 65 45 75 35”显然是有4个空格,因此会被分割成5部分给存储进了strArray的字符型数组
                 也就是:
                strArray[0]="55";   strArray[1]="65";  strArray[2]="45";  strArray[3]="75";  strArray[4]="35";
                 所以数组strArray的长度是5;

作者: 小马过河    时间: 2013-12-13 22:53
笑脸不在 发表于 2013-12-13 19:13
问题1答:解释 String[] strArray=str.split(" ");                即使用split函数将str字符串按照" "进行 ...

{:soso__968770507516721919_1:}谢谢菇凉解答哟,学霸威武!
另外,之所以阿狸这么巨大无朋,因为是大家都在看吖
{:soso__16931762071844650487_2:}


作者: Lillian    时间: 2013-12-14 17:48
我也是一个新手不过第二个问题我可以回答你:
作者: Lillian    时间: 2013-12-14 17:52
我可以回答你的问题2:
字符串str“55 65 45 75 35”包含空字符也是一个整体,为什么转成字符串数组strArray.length的长度为5呢?不应该是1嚒?

因为代码中用str.split(" ");是指用空格来分割字符串,且不包括空格,“55 65 45 75 35"切割之后得到的是"55","65","45","75","35"




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2