比较字符串就好像它们是数字一样

时间:2010-12-05 00:41:13

标签: java string operators string-comparison

我想知道是否可以将字符串比作数字一样。例如,你有什么方法可以做到"Cat" > "Dog"

7 个答案:

答案 0 :(得分:5)

您不能按照建议使用运算符(例如"Cat" < "Dog")。正如@larsmans所说,这将需要运算符重载,Java没有提供。但是,您仍然可以使用"Cat".compareTo("Dog")来比较字符串,如果字符串相等则返回0,如果"Cat" lexicographically小于"Dog",则返回大于0的数字,或者为负数否则就是数字。

请参阅this page

答案 1 :(得分:4)

只需实现Comparator界面并以您喜欢的方式实现比较。

Here is the Javadoc

答案 2 :(得分:1)

你做不到。这需要operator overloading,即Java won't let you

答案 3 :(得分:0)

不,不存在。 你必须使用compareTo()。

答案 4 :(得分:0)

您可以使用String

中的compareTo方法

答案 5 :(得分:0)

您需要使用以下某种方法:

int compare(String s1, String s2);   // write code to do comparison.

答案 6 :(得分:-1)

由于唯一的方法是为每个单词保留一个设定值,您将使用数组或其他形式的数据存储。

下面是一个示例,您只需将单词及其对应的值保留在两个数组中(注意,它们必须按相同的顺序排列,因此第一个单词与第一个数字对应,等等)。

public static String[] words = {"cat","dog","banana"};
public static int[] value = {3,4,5};
public static void main(String[] args){
    if(valOf("Cat") > valOf("Dog")){
        System.out.print("Cat is greater than Dog");
    }
    else{
        System.out.print("Cat is not greater than Dog");
    }
}
public static int valOf(String str){
    for(int x=0;x<words.length;x++){
        if(str.equalsIgnoreCase(words[x])){
            return value[x];
        }
    }
    return -1;
}