A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:有一个字符串:"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:}



评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!

查看全部评分

10 个回复

倒序浏览
为什么我的字体好扭~~{:soso__10613299921339608993_7:}
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习了.............
回复 使用道具 举报
额.......
回复 使用道具 举报
本帖最后由 胡永城 于 2013-12-13 17:50 编辑

为什么你的阿狸好
回复 使用道具 举报
我也想知道,阿里阿里!为什么可以那么大!
回复 使用道具 举报
问题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;

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
笑脸不在 发表于 2013-12-13 19:13
问题1答:解释 String[] strArray=str.split(" ");                即使用split函数将str字符串按照" "进行 ...

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

回复 使用道具 举报
我也是一个新手不过第二个问题我可以回答你:
回复 使用道具 举报
我可以回答你的问题2:
字符串str“55 65 45 75 35”包含空字符也是一个整体,为什么转成字符串数组strArray.length的长度为5呢?不应该是1嚒?

因为代码中用str.split(" ");是指用空格来分割字符串,且不包括空格,“55 65 45 75 35"切割之后得到的是"55","65","45","75","35"
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马