有这么一个小程序,我想了半天没来得及写上去,大家帮忙解答:已知a、s、d、A、f、h、F要求排序后的结果是:A、a、d、F、f、h、s
     请大师指导指导!

解决方案 »

  1.   

    这应该是排序吧,将字母从A-Z,a-z进行排列.
      

  2.   

    哎,还是我来上代码吧
      
       package com.蜗牛;   import java.util.Arrays;
       import java.util.Comparator;   public class 网络蜗牛 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
          String a[]={"a","A","h","f","H","F"};
            Comparator    c=new Comparator(){
                public int compare(Object el1, Object el2){
                    String key1=el1.toString().toLowerCase()
                               +"_"+el1.toString();
                    String key2=el2.toString().toLowerCase()
                               +"_"+el2.toString();
                    
                    return key1.compareTo(key2);
                }
            };
            Arrays.sort(a, c);
            for(int i=0;i<a.length;i++){
                System.out.print(" "+a[i]);
            } }
    }
      
      测试已通过
      

  3.   

    类名包含中文,包名包含中文,编译不通过。把这些字母转成ascii码,再来个插入排序,也是个方法
      

  4.   

    直接吧A a s....转为char , 在java里头 char可以直接作为int型使用.... 可以借鉴 (int)'a' ,然后排序
      

  5.   


    这样子还不如
    // String[] test = {"a","s","d","A","f","h","F"}; 
    // Arrays.sort(test);,但是不行,
    结果是[A, F, a, d, f, h, s],不是楼主想要的蜗牛的不错,但是没看懂
      

  6.   

    public class Sort {
        public static void main(String[] args)
        {
         char a[]={'g','s','A','a','U','K','e','k'};
         int l=a.length;
         char temp;
         int j;
         int n=l-1;
         for(int i=0;i<l;i++)
         {
           for(j=0;j<n;j++)
           {
            //System.out.print(" "+(j+1));
            if(Character.toUpperCase(a[j])>=Character.toUpperCase(a[j+1]))
            {
             temp=a[j];
             a[j]=a[j+1];
             a[j+1]=temp;
            }
           }
           n--;
         }
          for(int k=0;k<l-1;k++)
         {
          if(Character.toUpperCase(a[k])==Character.toUpperCase(a[k+1]))
          {
           temp=a[k];
           a[k]=a[k+1];
           a[k+1]=temp;
          }
         }
         for(int k=0;k<l;k++)
         {
          System.out.print(" "+a[k]);
         }
      }
      

  7.   

    写下我的思路吧:1)分析 a的ASCII码(97)和 A的ASCII码(65) 相差32,我们明白所有大小写字符的ASCII码都相差322)大写字母的ASCII码+31.5 必然比它的小写字母ASCII码还要小0.5 3)考虑大写字母(Z)的ASCII码为 90,ASCII90就是区分 大小写的标志。现在我们开始分析:字符串
    a   s    d    A   f   h   F97  115 100  65  102 104  70我们将小于90的字符串都加31.597  115 100 96.5  102 104 101.5我们再进行冒泡排序,得到:
    96.5  97  100 101.5 102 104  115即:
    A    a     d   F    f    h   s代码如下:
    import java.util.*;
    public class Test
    {
    public static void main(String[] args) { 
    Character [] c={'a','s','d','A','f','h','F'}; //冒泡排序
    /*
    for(int i=0;i<c.length;i++){
    for(int j=i+1;j<c.length;j++){
    Double c2asciiF=(c[i].hashCode()<=90?c[i].hashCode()+31.5:c[i].hashCode());
    Double c2asciiL=(c[j].hashCode()<=90?c[j].hashCode()+31.5:c[j].hashCode());
    if(c2asciiF>c2asciiL){
    Character tmp=c[i];
    c[i]=c[j];
    c[j]=tmp;
    }
    }
    }*/
    //循环打印
    for(int i=0;i<c.length;i++){
    System.out.println(c[i].hashCode());
    }

    }
      

  8.   

    SHIT  代码注释发错了 重新发一个~import java.util.*;
    public class Test
    {
    public static void main(String[] args) { 
    Character [] c={'a','s','d','A','f','h','F'}; //冒泡排序
    for(int i=0;i<c.length;i++){
    for(int j=i+1;j<c.length;j++){
    Double c2asciiF=(c[i].hashCode()<=90?c[i].hashCode()+31.5:c[i].hashCode());
    Double c2asciiL=(c[j].hashCode()<=90?c[j].hashCode()+31.5:c[j].hashCode());
    if(c2asciiF>c2asciiL){
    Character tmp=c[i];
    c[i]=c[j];
    c[j]=tmp;
    }
    }
    }
    //循环打印
    for(int i=0;i<c.length;i++){
    System.out.println(c[i]);
    }

    }
      

  9.   

       public static void sort(char[] b){
                 char[] sun=b;
    System.out.println("排序前");
    System.out.println("----------------------------------");
    for(int i=0;i<sun.length;i++){
    System.out.print(sun[i]+"\t");
    }
    String sum="";
    char[] sum2=new char[sun.length];
    for(int i=0;i<sun.length;i++){
    String a=sun[i]+"";
    sum=sum+a.toUpperCase();
    }
    for(int i=0;i<sun.length;i++){
    sum2[i]=sum.charAt(i);
    } for(int i=0;i<sum2.length-1;i++){
    for(int j=0;j<sun.length-1-i;j++){

    if((int)sum2[j]>(int)sum2[j+1]){

    char se=sum2[j];
    sum2[j]=sum2[j+1];
    sum2[j+1]=se;
    se=sun[j];
    sun[j]=sun[j+1];
    sun[j+1]=se;
    }else if((int)sum2[j]==(int)sum2[j+1]&&(int)sun[j]>  (int)sun[j+1]){
    char se=sum2[j];
    sum2[j]=sum2[j+1];
    sum2[j+1]=se;
    se=sun[j];
    sun[j]=sun[j+1];
    sun[j+1]=se;
    }
    }
    }
    System.out.println("");
    System.out.println("排序后");
    System.out.println("----------------------------------");
    for(int i=0;i<sun.length;i++){
    System.out.print(sun[i]+"\t");
    }
        }
      

  10.   


    import java.lang.*;
    import java.util.*;public class Test{
    public static void main(String[] args){
    String[] s = new String[]{"a","s","d","A","f","h","F"};
    System.out.println(Arrays.toString(s));
    //System.out.println((int)'a');
    //System.out.println((int)'A');
    //System.out.println((int)'z');
    //System.out.println((int)'Z');
    String [] s1 = new String[50];
    for(int i=0;i<s.length;i++){
    char c = getChar(s[i]);
    System.out.println(c);
    if(isUpper(c)){
    //System.out.println(getUpperIndex(c));
    s1[getUpperIndex(c)] = s[i];
    }else{
    //System.out.println(getLowIndex(c));
    s1[getLowIndex(c)] = s[i];
    }
    }
    System.out.println(Arrays.toString(s1));
    copyArrayForNotNull(s1,s);
    System.out.println(Arrays.toString(s));

    } //将String转成char并取得值
    public static char getChar(String s){
    return (s.charAt(0));
    }
    //取得大写char应该在数组中的位置 存放位置0,2,4...偶数位
    public static int getUpperIndex(char c){
    final int upperStart = 65;
    final int upperEnd = 90;
    int i = 2*((int)c-upperStart);
    return i;
    }
    //取得小写char应该在数组中的位置 存放位置1,3,5...奇数位
    public static int getLowIndex(char c){
    final int lowStart = 97;
    final int lowEnd = 122;
    int i = 2*((int)c-lowStart)+1;
    return i;
    }
    //判断是否为大写
    public static boolean isUpper(char c){
    final int upperStart = 65;
    final int upperEnd = 90;
    final int lowStart = 97;
    final int lowEnd = 122;
    if((int)c>=upperStart && (int)c<=upperEnd){
    return true;
    }else{
    return false;
    }
    }
    //将数组s1中的非空元素拷贝到s2
    public static boolean copyArrayForNotNull(String[] s1,String[] s2){
    int s2Index = 0;
    try{
    for(int i=0;i<s1.length;i++){
    if(s1[i]!=null){
    s2[s2Index] = s1[i];
    }else{
    continue;
    }
    s2Index++;
    }
    }catch(Exception e){
    System.out.println("数组拷贝错误,错误原因:"+e.toString());
    return false;
    }
    return true;
    }
    }
    重新写了遍 方法比较搓 见谅 呵呵
      

  11.   

    kaoh1631 的答案确实对,其他的希望大家验证!不是很对,作为一个面试题这样写也复杂了
      

  12.   

    21# 大虾的改改(精华在于 大0.5) 学习了!public class SortTest {
    public static void main(String[] args) {
    Character[] c = { 'a', 's', 'd', 'A', 'f', 'h', 'F' };
    double tempA;
    double tempB;
    char chA;
    for (int i = 0; i < c.length; i++) {
    for (int j = i + 1; j < c.length; j++) {
    tempA = c[i] < 97 ? c[i] + 31.5 : c[i];
    tempB = c[j] < 97 ? c[j] + 31.5 : c[j];
    if (tempA > tempB) {
    chA = c[i];
    c[i] = c[j];
    c[j] = chA;
    }
    }
    }
    for (int i = 0; i < c.length; i++) {
    System.out.println(c[i]);
    }
    }
    }
      

  13.   

    //不错的题目 public static void main(String[] args) {
    String[] c={"a", "s", "d", "A", "f", "h", "F" };
    for(int i=0;i<c.length;i++){
    for(int j=0;j<c.length;j++){
    //将他们全变成大写在比较一样的字母就在一起咯
    if(c[i].toLowerCase().hashCode()<c[j].toLowerCase().hashCode()){
    String t=c[i];
    c[i]=c[j];
    c[j]=t;
    }
    //顺序是a A d f F h s
    }

    }
    //再将相同的字母换个位置
    for(int i=0;i<c.length-1;i++){
    if(c[i].toLowerCase().hashCode()==c[i+1].toLowerCase().hashCode()&&c[i].hashCode()>c[i+1].hashCode()){
    String t=c[i];
    c[i]=c[i+1];
    c[i+1]=t;
    }
    }

    //打印A a d  F f h s
    for(int i=0;i<c.length;i++){
    System.out.println(c[i]+" "+c[i].hashCode());
    }
    }
      

  14.   

    26个字母按照ascii值比较大小,无需用集合框架搞就可以实现