代码之家  ›  专栏  ›  技术社区  ›  Ash Dean

比较多个字符串并排序答案

  •  0
  • Ash Dean  · 技术社区  · 11 年前

    我试图比较3个不同的单词,然后对它们进行排序,但我没有得到正确的答案。一些方向将是一个很大的帮助! 对于Java来说,这是一个非常新的概念,并且已经在这个问题上停留了太久。

    到目前为止,我使用的是:

    `// word1, word2, and word3 
       /* If word1 is greater than word2, 
        * and word2 IS greater than word3 and word3 is NOT greater then word1: display word1,     word2, word3 
        */
       result1  =   word1.compareTo(word2);
       result1a =   word1.compareTo(word3);
       result1b =   word2.compareTo(word3);
    
    //display and compare information
           if (result1 > result1a + result1b)  
           JOptionPane.showMessageDialog(null, word1 + word2 + word3);
    
           else if (result1 < result1a + result1b)
           JOptionPane.showMessageDialog(null, word2 + word3 + word1);
    

    `

    2 回复  |  直到 11 年前
        1
  •  1
  •   R2B2    11 年前
    String message;
    if(word2.compareTo(word1) < 0) { //word2 < word1
        if(word3.compareTo(word1) < 0) { //word3 < word1
            if(word3.compareTo(word2) < 0) { //word3 < word2
                message = word3 + word2 + word1;
            } else { //word2 <= word3
                message = word2 + word3 + word1;
            }
        } else { //word1 <= word3
            message = word2 + word1 + word3;
        }
    } else { //word1 <= word2
        if(word3.compareTo(word2) < 0) { //word3 < word2
            if(word3.compareTo(word1) < 0) { //word3 < word1
                message = word3 + word1 + word2;
            } else { //word1 <= word3
                message = word1 + word3 + word2;
            }
        } else { //word2 <= word3
            message = word1 + word2 + word3;
        }
    }
    

    这是使用词典/字母顺序。如果你想用单词的长度来比较,你必须替换每个单词 s1.compareTo(s2) 通过 s1.length() - s2.length() (如果s1大于s2,则应为正整数)。

        2
  •  1
  •   Sagar D    11 年前
    ArrayList<String> list = new ArrayList<String>(); //create an arraylist
    
    list.add("ccc")  //add the strings
    list.add("aaa");
    list.add("bbb");
    
    Collections.sort(list); //this will sort the list in lexographical precedence
    
    //now get the words and process as you want