黑马程序员技术交流社区

标题: 高手给我解释解释。 [打印本页]

作者: hahh    时间: 2013-12-19 19:46
标题: 高手给我解释解释。
本帖最后由 hahh 于 2013-12-19 23:08 编辑

public class Test3 {
        public static void sop(String str){
                System.out.println(str);
        }

        public static void main(String[] args) {
                String s = "cbdea";
                sop(sortString(s));
        }
        public static String sortString(String str){
                char[] chs = str.toCharArray();
                bubbleSort(chs);
                return new String(chs);
        }
        public static void bubbleSort(char[] arr){//这块的用int为何不行那,为什么必须这样的格式那。
               
                for (int i = 0; i < arr.length-1; i++) {
                        for (int j = i+1; j < arr.length; j++) {
                                if(arr>arr[j]){
                                        int temp = arr;
                                        arr = arr[j];
                                        arr[j] = (char) temp;为什么这里一定有个(char),没有就不对那》
                                }
                        }
                }
        }

}

作者: 公子-醉香    时间: 2013-12-19 20:04
  1. public class Test3 {
  2.         public static void sop(String str){
  3.         System.out.println(str);
  4. }

  5. public static void main(String[] args) {
  6.         String s = "cbdea";
  7.         sop(sortString(s));
  8. }
  9. public static String sortString(String str){
  10.         char[] chs = str.toCharArray();
  11.         bubbleSort(chs);
  12.         return new String(chs);
  13. }
  14. public static void bubbleSort(char[] arr){//这块的用int为何不行那,为什么必须这样的格式那。
  15.         
  16.         for (int i = 0; i < arr.length-1; i++) {
  17.                 for (int j = i+1; j < arr.length; j++) {
  18.                         if(arr[i]>arr[j]){
  19.                                 int temp = arr[i];
  20.                                 arr[i] = arr[j];
  21.                                 arr[j] = (char)temp;//为什么这里一定有个(char),没有就不对那?
  22.                         }
  23.                 }
  24.         }
  25. }
  26. }
  27. /*
  28.         你的这个问题的根本就是类型匹配的问题。
  29.         1.首先你定义了一个String类型的字符串
  30.         2.然后你用str.toCharArray()方法把它转换成了字符数组,在数组中存放的就变成字符类型的了
  31.         3.对数组中的元素进行了排序,因为你在排序中定义的temp是int类型的,最后就需要把它强转成char类型
  32.           这种定义在语法上是没有错误的,但整个程序阅读起来非常的不容易。
  33.         4.直接改成下面的方式,简单易懂。
  34.                                           char temp = arr[i];
  35.                     arr[i] = arr[j];
  36.                     arr[j] = temp;
  37.           
  38. */
复制代码

作者: lichao    时间: 2013-12-19 20:56
我加了注释,希望对你有帮助
  1. public class Test3 {
  2.     public static void sop(String str){  //封装了输出语句,有利于书写简便。
  3.             System.out.println(str);
  4.     }

  5.     public static void main(String[] args) {
  6.             String s = "cbdea";
  7.             sop(sortString(s));//可以拆成 String str=soreString(s);sop(str);
  8.     }
  9.     public static String sortString(String str){//将字符串变成字符数组的方法。
  10.             char[] chs = str.toCharArray();
  11.             bubbleSort(chs);//调用字符数组排序方法
  12.             return new String(chs);//将排序好的数组转化成字符串返回
  13.     }
  14.     public static void bubbleSort(char[] arr){//上面调用这个方法时传入的参数数字符数组,那么接受时,当然也要是字符数组呀!传入数值类型应与接受参数类型一致
  15.             
  16.             for (int i = 0; i < arr.length-1; i++) {
  17.                     for (int j = i+1; j < arr.length; j++) {//大圈套小圈的循环
  18.                             if(arr[i]>arr[j]){
  19.                                     int temp = arr[i];//这里如果定义成char temp = arr[i];那么后面就不用强制类型转换了。
  20.                                     arr[i] = arr[j];
  21.                                     arr[j] = (char) temp;//因为你在定义的temp类型时int型的占四个字节,arr[j]是char型的占一个字节,char可以自动转换成int型的,但是int型的不能自动转换成char型的,这样会引起数据丢失,int型数据转换成char型数据时要强制类型转换
  22.                             }
  23.                     }
  24.             }
  25.     }

  26. }
复制代码

作者: hahh    时间: 2013-12-19 23:08
lichao 发表于 2013-12-19 20:56
我加了注释,希望对你有帮助

懂了。谢谢
作者: 小马过河    时间: 2013-12-20 06:03
同学,回复贴入代码是用的那个文本工具?
新手各种不专业
作者: FFF    时间: 2013-12-20 10:44
小马过河 发表于 2013-12-20 06:03
同学,回复贴入代码是用的那个文本工具?
新手各种不专业

用表情左边的"<>"符号的工具




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