JAVA按字典顺序排序4个字符串

时间:2015-11-04 02:22:54

标签: java

我是一名初学Java程序员! 我正在研究一个问题集。这需要4个字符串并按字典顺序对它们进行排序。我最初使用

List<String> strings = new ArrayList<String>();

strings.add(first);
strings.add(second);
strings.add(third);

Collections.sort(strings);

但是我的导师坚持使用条件。 :( 我花了最后2个小时尝试使用compareTo()方法。我的代码正在编译,但似乎存在逻辑错误。我希望有人可以指出并给我解释原因。

另外,我是新来的。我努力让我的代码易于阅读。如果有任何提示发送给我的方式!此外,如果有任何规则或事情我做得不对,请告诉我。谢谢。

编辑:我一直在尝试粘贴此代码。堆栈就是不让它发生。

这是我的要点:https://gist.github.com/mattmccarthy11/b8b5315493fe43efb42c

2 个答案:

答案 0 :(得分:0)

您正在使用导致组合爆炸的逻辑,即,对于您添加的每个新字符串,您必须添加许多条件。更好的方法如下:

List<String> strings = new ArrayList<String>();

strings.add(first);
strings.add(second);
strings.add(third);
    for (int i = 0; i < strings.size(); i++) {
    int tIndex = i;
    for (int j = i; j < strings.size(); j++) {
        if(strings.get(j).compareTo(strings.get(tIndex))<0){
            tIndex = j;
        }

    }
    String tString = strings.get(i);
    strings.set(i, strings.get(tIndex));
    strings.set(tIndex, tString);

}

答案 1 :(得分:0)

public class LexicographicalOrder {
        public static void main(String args[]){

            String[] mystr = {"Jack","Fortran","Amon","Cpp","Phaser"};

            for(int i=0;i<mystr.length-1;i++){
                for(int j=i+1 ;j<mystr.length;j++){

                    if( mystr[i].compareTo(mystr[j]) > 0 ){
                       String tmp = mystr[i];
                       mystr[i]= mystr[j];
                       mystr[j]=tmp;
                    }
                }
            }

             // print array 
            for(int i=0;i<mystr.length;i++){
                System.out.println(mystr[i]);
            }

        char[] mychar = {'A','B','C','D','E','F','G','H','I'};

        for(int i=0;i<mychar.length;i++){
          System.out.println((int)mychar[i]); // print ascii value
        }

        }
}
  

//输出

     
      
  • 阿蒙
  •   
  • Cpp
  •   
  • Fortran
  •   
  • 杰克
  •   
  • 移相
  •   

这是一个简单的解决方案,希望对此有所帮助。