| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1072 人关注过本帖
标题:求大神帮忙!编写程序对该数组排序,并输出所有包含“王”字的字符串
只看楼主 加入收藏
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
收藏
已结贴  问题点数:18 回复次数:1 
求大神帮忙!编写程序对该数组排序,并输出所有包含“王”字的字符串
但是我的运行运行结果中排序部分的结果不对,是:张合,小王,天王盖地虎,小赵,王敏
但是正确的不是应该是张合,小赵,小王,王敏,天王盖地虎  吗?
class string{
     String [] name;
     public string(String [] name){
           this.name = name;
     }
     void contain_wang(String [] name){
           System.out.println("输出带王的字符串:");
               for(int i=0;i<name.length;i++){
                   //对字符进行分割比较
                       for(int j=0;j<name[i].length();j++){
                              if(name[i].charAt(j)=='王'){
                                      System.out.println(name[i]+' ');
                                  }
                           }
                   }
               //    System.out.println();
           }
        void paixu(String [] name){
                  String name1;
                  System.out.println("字符串数组排序后的结果是");
                  //进行冒泡排序
                  for(int i=0;i<name.length;i++){
                          for(int j=i;j<name.length-1;j++){
                                  if(name[j].compareTo(name[j+1])>=0){   
                                      name1 = name[j];
                                      name[j] = name[j+1];
                                      name[j+1] = name1;
                      }                     
                    }
                      }
               }
           void output(String [] name){
                   for(int i=0;i<name.length;i++){
                         System.out.println(name[i]+' ');
                       }
                   //    System.out.println(' ');
               }
       public static void main(String [] agrs){
                String [] name1 = {"王敏","张合","小王","小赵","天王盖地虎"};
                string name = new string(name1);
                name.contain_wang(name1);
                name.paixu(name1);
                name.output(name1);
               
           }
      
}
2017-04-13 13:57
zsh981022984
Rank: 3Rank: 3
来 自:湖南
等 级:论坛游侠
威 望:6
帖 子:36
专家分:153
注 册:2015-12-6
收藏
得分:18 
回复 楼主 选调生
刚刚查了下"就是compareTo( )方法在对字符串进行比较时,比较的是Unicode码,并不能对汉字进行准确的排序,所以汉字比较时会出现比较混乱的结果"
还有就是你的冒泡排序有点问题,改成下面:
for(int i=0;i<name.length-1;i++)
          {
               for(int j=0;j<name.length-1-i;j++)


个人见解,有问题欢迎大家一起讨论提高

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2017-04-15 22:52
快速回复:求大神帮忙!编写程序对该数组排序,并输出所有包含“王”字的字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025017 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved