黑马程序员技术交流社区

标题: 字符串问题 [打印本页]

作者: 沈艳南    时间: 2013-5-18 01:19
标题: 字符串问题
本帖最后由 沈艳南 于 2013-5-20 00:49 编辑

/*
* 对字符串中的数字进行排序
* "45,65,1,7,34,-2"
*
*/
public class StringDemo1 {
        public static void main(String[] args) {
        String s = "45,65,1,7,34,-2";
        String[] ch=method(s,",");
        System.out.println(method1(ch,","));
        
        }
        public static String[] method(String str,String reg){
                //建立一个方法,将字符串 转成字符串数组.
                String[] ch = str.split(reg);
                //对数组中的每个元素转成数值型变量,比较大小.
                for(int x = 0;x < ch.length;x++){
                        for(int y = 0;y < ch.length-1;y++){
                        if(Integer.parseInt(ch[x])>Integer.parseInt(ch[y])){
                                String  temp = ch[x];
                                                ch[x]=ch[y];
                                                ch[y]=temp;
                                
                        }
                        }
                        
                }
               
                return ch;
        }//输出
        public static String  method1(String[] ch,String reg){
                String str = "";
                for(int x = 0;x < ch.length;x++){
                        if(x!=ch.length-1){
                        str = str+ch[x]+reg;
                        }
                        else{
                                str = str+ch[x];
                        }
                }
                return str;
        }
        

}


作者: 神之梦    时间: 2013-5-18 01:23
楼主米说啥问题,
作者: 沈艳南    时间: 2013-5-18 21:42
神之梦 发表于 2013-5-18 01:23
楼主米说啥问题,

哦 是的 就是按照升序排列
作者: 不胖的胖子    时间: 2013-5-19 08:11
本帖最后由 不胖的胖子 于 2013-5-19 08:23 编辑

/*
   其实这是个排序问题。
   为了说明这个问题,我把你的代码简化下:
   直接在int 数组中进行,其实效果一样。
   你的排序主体部分如下:
   for(int x = 0;x < ch.length;x++){
                        for(int y = 0;y < ch.length-1;y++){
                        if(Integer.parseInt(ch[x])>Integer.parseInt(ch[y])){
                                String  temp = ch[x];
                                        ch[x]=ch[y];
                                        ch[y]=temp;

                        }
                        }
*/
import java.util.Arrays;
public class Test
{
        public static void main(String args[]){
                int[] arr = new int[]{45,65,1,7,34,-2};//还是排你原来的数组

                /*
                  沿用你的排序方式  
                */
                for(int i=0;i<arr.length;i++){
                        sop("第"+(i+1)+"轮比较");
                        for(int j=0;j<arr.length-1;j++){
                                if(arr<arr[j]){   //改成小于号就可以完成升序排列
                                        int temp = arr;
                                        arr = arr[j];
                                        arr[j] = temp;
                                }
                                sop(Arrays.toString(arr));
                        }

                }
                sop(Arrays.toString(arr));//使用Arrays工具类,便于查看数组内容
        }

        public static void sop(Object obj){
                System.out.println(obj);
        }
}
/*
        我对排序过程进行了一个跟踪,目前
        不知道你这属于啥排序。我现在了解原理
        的排序方式也就选择和冒泡排序。对比下
        你的排序是比较慢的一种方式。后面会给出
        原因。
        ---------- 运行java程序 ----------
第1轮比较
[45, 65, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
第2轮比较
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
第3轮比较
[1, 65, 45, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
第4轮比较
[1, 45, 65, 7, 34, -2]
[1, 7, 65, 45, 34, -2]
[1, 7, 45, 65, 34, -2]
[1, 7, 45, 65, 34, -2]
[1, 7, 45, 65, 34, -2]
第5轮比较
[1, 7, 45, 65, 34, -2]
[1, 7, 45, 65, 34, -2]
[1, 7, 34, 65, 45, -2]
[1, 7, 34, 45, 65, -2]
[1, 7, 34, 45, 65, -2]
第6轮比较
[-2, 7, 34, 45, 65, 1]
[-2, 1, 34, 45, 65, 7]
[-2, 1, 7, 45, 65, 34]
[-2, 1, 7, 34, 65, 45]
[-2, 1, 7, 34, 45, 65]
[-2, 1, 7, 34, 45, 65]

输出完成 (耗时 0 秒) - 正常终止
*/


作者: 殇_心。    时间: 2013-5-19 11:32
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!




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