当前位置: 代码迷 >> Java相关 >> 编写实现字符串数组原地排序的功能
  详细解决方案

编写实现字符串数组原地排序的功能

热度:264   发布时间:2008-04-07 17:32:38.0
编写实现字符串数组原地排序的功能
编写实现字符串数组原地排序的功能。
建议:字符串数组可以自己直接定义并初始化;字符串可以通过上面的第8题得到,相当于练习使用与测试上面的类;查找功能可以定义成通用函数,放到自己的函数库中。
public class zy02 {
    public String s_str;
   public String[] d_str;
   public String f_str=" ,;''";
   public int k;
   
    public zy02(String s){
         s_str=new String(s);
    }
   
    public void setInfo(String s)
    {
         int i, j;
        i=0; k=0;
        while(i<s_str.length())
        {
            if (f_str.indexOf(s_str.charAt(i))>=0) {++i; continue;}
            j=i;
            while (i<s_str.length() && f_str.indexOf(s_str.charAt(i))==-1) ++i;
            ++k; //s_str.subString(j,i);
         }
         d_str=new String[k];
         i=0; k=0;
         while(i<s_str.length())
         {
             if (f_str.indexOf(s_str.charAt(i))>=0) {++i; continue;}
             j=i;
             while (i<s_str.length() && f_str.indexOf(s_str.charAt(i))==-1) ++i;
             d_str[k]=s_str.substring(j,i);
             ++k;
          }
      }
   public String paixu()
   {   
       setInfo(s_str);
        String[] b_str;
        b_str=new String[k];
       String ss=" ";
       int i,j,m,n,p,q;
       char x,y,t;
       for(i=0;i<k;i++)
       {
           ss=d_str[i];
           j=d_str[i].length();
           for(m=0;m<j-1;m++)
           {
             for (n=m+1;n<j;n++)
             {
                 x=ss.charAt(m);
                 y=ss.charAt(n);
                 if (x<y) {t=x;x=y;y=t;}
             }
             }
             b_str[i]=ss;
            
       }
       return b_str[i];
   }

    public static void main(String[] args) {
        zy02 s=new zy02("i an a good student congratulation!");
          System.out.println(s.paixu());
    }
}
麻烦大家帮忙找下错,我真的找不到了!!谢啦
搜索更多相关的解决方案: public  String  字符  str  原地  

----------------解决方案--------------------------------------------------------
import java.util.*;
public class zy02 {
    public String s_str;
   public String[] d_str;
   public String f_str=" ,;''";
   public int k;
   
    public zy02(String s){
         s_str=new String(s);
    }
   
    public void setInfo(String s)
    {
         int i, j;
        i=0; k=0;
        while(i<s_str.length())
        {
            if (f_str.indexOf(s_str.charAt(i))>=0) {++i; continue;}
            j=i;
            while (i<s_str.length() && f_str.indexOf(s_str.charAt(i))==-1) ++i;
            ++k; //s_str.subString(j,i);
         }
         d_str=new String[k];
         i=0; k=0;
         while(i<s_str.length())
         {
             if (f_str.indexOf(s_str.charAt(i))>=0) {++i; continue;}
             j=i;
             while (i<s_str.length() && f_str.indexOf(s_str.charAt(i))==-1) ++i;
             d_str[k]=s_str.substring(j,i);
             ++k;
          }
      }
   public String[] paixu()
   {   
       setInfo(s_str);
       Arrays.sort(d_str);
       return d_str;
   }

    public static void main(String[] args) {
        zy02 s=new zy02("i an a good student congratulation!");
        
          System.out.println( Arrays.asList(s.paixu()) );
    }
}
----------------解决方案--------------------------------------------------------
import java.util.*;
public class zy02 {
    public String s_str;
   public String[] d_str;
   public String f_str=" ,;''";
   public int k;
   
    public zy02(String s){
         s_str=new String(s);
    }
   
    public void setInfo(String s)
    {
         int i, j;
        i=0; k=0;
        while(i<s_str.length())
        {
            if (f_str.indexOf(s_str.charAt(i))>=0) {++i; continue;}
            j=i;
            while (i<s_str.length() && f_str.indexOf(s_str.charAt(i))==-1) ++i;
            ++k; //s_str.subString(j,i);
         }
         d_str=new String[k];
         i=0; k=0;
         while(i<s_str.length())
         {
             if (f_str.indexOf(s_str.charAt(i))>=0) {++i; continue;}
             j=i;
             while (i<s_str.length() && f_str.indexOf(s_str.charAt(i))==-1) ++i;
             d_str[k]=s_str.substring(j,i);
             ++k;
          }
      }
   public String[] paixu()
   {   
       setInfo(s_str);
        //String[] b_str;
        //b_str=new String[k];
       String ss=" ";
       int i,j,m,n,p,q;
       //char x,y,t;
       for(i=0;i<k;i++)
       {
           for(m=0;m<k-1;m++)
           {
             if(d_str[m].compareTo(d_str[m+1])>0)
             {
                 String s=d_str[m];
                 d_str[m]=d_str[m+1];
                 d_str[m+1]=s;
                 }
             }
            
           
       }
       return d_str;
   }

    public static void main(String[] args) {
        zy02 s=new zy02("i an a good student congratulation!");
        
          System.out.println( Arrays.asList(s.paixu()) );
    }
}

[[it] 本帖最后由 sunkaidong 于 2008-4-7 18:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------
你们的题目不允许直接用类库现有的方法吗?
----------------解决方案--------------------------------------------------------
呵呵,我也奇怪呢..估计是例题..这些题目用来练习挺好的...
----------------解决方案--------------------------------------------------------
import java.util.*;
public class zy02 {
    public String s_str;
   public String[] d_str;
   public String f_str=" ";
   public int k;
   
    public zy02(String s){
         s_str=new String(s);
         
    }
    public String[] paixu()
   {   
       d_str=s_str.split(f_str);
       Arrays.sort(d_str);
       return d_str;
   }

    public static void main(String[] args) {
        zy02 s=new zy02("i an a good student congratulation!");
        
          System.out.println( Arrays.toString(s.paixu()));
    }
}
----------------解决方案--------------------------------------------------------
1.import java.util.*;是什么意思?是不是和 Arrays有关的?

2. public String[] paixu()
是不是涉及到字符串数组的都而可以这样定义函数呢?
3. public String paixu()
   {   

       return b_str[i];
   }
我的这种做法错在哪儿呢?

4.我想找些难度比较浅的题目先来熟悉一下,能给我推荐基本书吗?或者有什么简单的题目也行!

[[it] 本帖最后由 xiaolaba3330 于 2008-4-7 21:13 编辑 [/it]]
----------------解决方案--------------------------------------------------------
1.import java.util.*;是什么意思?是不是和 Arrays有关的?//是的.里面有很多模板和泛型设计

2. public String[] paixu()
是不是涉及到字符串数组的都而可以这样定义函数呢?//你要返回的数组所以这样定义
3. public String paixu()
   {   

       return b_str[i];
   }
我的这种做法错在哪儿呢?//你要返回数组首地址就好了

4.我想找些难度比较浅的题目先来熟悉一下,能给我推荐基本书吗?或者有什么简
单的题目也行!//think in java 书不错...
----------------解决方案--------------------------------------------------------
3. public String paixu()
   {   

       return b_str[i];
   }
我的这种做法错在哪儿呢?//你要返回数组首地址就好了
你的意思是说假如说我的题目只要求返回数组的首地址才能这么定义吗?还是说我写return b_str[0]能输出和你给的程序一样的结果吗?

[[it] 本帖最后由 xiaolaba3330 于 2008-4-7 21:24 编辑 [/it]]
----------------解决方案--------------------------------------------------------
我吗?我看完书要消化..现在是把书消耗掉...windows高级编程  c++primer3和4 mfc  think in java1和3  和c#  这阶段能消化掉就不错了......返回数组名字可以当数组用...

[[it] 本帖最后由 sunkaidong 于 2008-4-7 21:27 编辑 [/it]]
----------------解决方案--------------------------------------------------------
  相关解决方案