黑马程序员技术交流社区

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

作者: Emperors    时间: 2014-4-19 17:11
标题: 字符串排序
本帖最后由 Emperors 于 2014-4-19 19:50 编辑

                                                        请把字符串的数组排序并输出一个字符串???????????

package cn.cast;

public class Test02 {

/*
* 请把字符串的数组排序并输出一个字符串
* */

        public static void main(String[] args) {
                //按照空格键切割。得到一个字符串数组并输出一个字符串
               
                String s = "4 6 1 9 7 34 56 23";
                String [] strArray = s.split(" ");
//                定义一个int数组,把字符数组中 的每一个元素赋值给int数组中。
                int [] arr = new int[strArray.length];
                for(int x=0;x<arr.length;x++){
                        
                        arr[x] = Integer.parseInt(strArray[x]);
                }
                        

//                        对int数组排序
                for(int x = 0;x<arr.length-1;x++ ){
                        for (int y = 0;y<arr.length-1-x;y++){
                                if(arr[y]>arr[y+1]){
                                        int temp = arr[y];
                                        arr[y]=arr[y+1];
                                       
                                }
                        }
                }
//        把int数组的值转换成一个字符串。
                StringBuffer sd = new StringBuffer();
                for(int x = 0;x<arr.length;x++){
                        sd.append(arr[x]);
                                if (x==arr.length-1){
                                        sd.append(arr[x]);
                                       
                                }else{
                                        sd.append(arr[x]).append(" ");
                                       
                                }
                }
                String result = sd.toString();
                System.out.println("result:"+result);
        }
        
}
              而我打印的结果却是:result:11 11 11 77 77 2323 2323 2323
  这是为什么呢  ????               这结果令人头疼呀!!!!!!!  
   请神医妙手回春啊



作者: 月光海    时间: 2014-4-19 17:37
代码已经改好,请看代码中说明
  1. package awtDemo;

  2. public class Test {


  3. /*
  4. * 请把字符串的数组排序并输出一个字符串
  5. * */

  6.         public static void main(String[] args) {
  7.                 //按照空格键切割。得到一个字符串数组并输出一个字符串
  8.                
  9.                 String s = "4 6 1 9 7 34 56 23";
  10.                 String [] strArray = s.split(" ");
  11. //                定义一个int数组,把字符数组中 的每一个元素赋值给int数组中。
  12.                 int [] arr = new int[strArray.length];
  13.                 for(int x=0;x<arr.length;x++){
  14.                         
  15.                         arr[x] = Integer.parseInt(strArray[x]);
  16.                 }
  17.                         

  18. //                        对int数组排序
  19.                 for(int x = 0;x<arr.length-1;x++ ){
  20.                         for (int y = 0;y<arr.length-1-x;y++){
  21.                                 if(arr[y]>arr[y+1]){
  22.                                         int temp = arr[y];
  23.                                         arr[y]=arr[y+1];
  24.                                         arr[y+1]=temp;//少了这一句
  25.                                 }
  26.                         }
  27.                 }
  28. //        把int数组的值转换成一个字符串。
  29.                 StringBuffer sd = new StringBuffer();
  30.                 for(int x = 0;x<arr.length;x++){
  31.                         //sd.append(arr[x]);多了这一句
  32.                                 if (x==arr.length-1){
  33.                                         sd.append(arr[x]);
  34.                                        
  35.                                 }else{
  36.                                         sd.append(arr[x]).append(" ");
  37.                                        
  38.                                 }
  39.                 }
  40.                 String result = sd.toString();
  41.                 System.out.println("result:"+result);
  42.         }
  43.         
  44. }
复制代码





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