Java50道经典习题-程序40 字符串排序

题目:根据字符串内字符的ASCII码值对字符串数组进行排序。
分析:字符串用ASCII码比较大小,规则是:
1、比较首字母的ASCII码大小
2、若是前面的字母相同,则比较之后的字母的ASCII码值
3、若是一个字符串从首字母开始包含另一个字符串,则认为字符串长度较长的大;例 :ab > a
备注:Java中String类有一个compareTo方法,该方法返回一个int类型的数据。其比较规则是:拿出字符串的第一个字符与参数的第一个字符进行比较,如果两者不等,比较结束,返回两者的ascii差,即字符串的第一个字符减去参数的第一个字符的ascii码值.如果相等,则比较第二个字符,以此类推。比较到最后还是相等的,方法返回值为0。
比如下面的代码:“abc”.compareTo(“cad”)==-2
这里有一点需要注意:如果两个字符串的长度不同,并且一个字符串与另一个字符串的前面N个字符相等,那么这个方法返回返回两个字符串长度之差。
比如下面的代码:“fa”.compareTo(“f”)==1

 1 public class Prog40{
 2     public static void main(String[] args){
 3         String[] str = {"abc","cad","m","fa","f"};
 4         for(int i=str.length-1;i>=1;i--){
 5             for(int j=0;j<=i-1;j++){
 6                 //注意compareTo函数在这里的作用
 7                 if(str[j].compareTo(str[j+1])<0){
 8                     String temp = str[j];
 9                     str[j] = str[j+1];
10                     str[j+1] = temp;
11                 }
12             }
13         }
14         //此处使用了增强for循环遍历数组元素
15         for(String subStr:str)//定义了一个String类型的变量接收遍历后的数组元素
16             System.out.print(subStr+" ");//将遍历后的数组元素依次输出
17     }
18 }
19 /*运行结果
20 m fa f cad abc
21 */

 

posted @ 2019-04-30 16:00  parkour高手  阅读(599)  评论(0编辑  收藏  举报