2010-12-05 47 views
4

我想知道是否可以比较字符串,就好像它们是数字一样。比如说有什么办法可以让你这么做:"Cat" > "Dog"比较字符串,好像它们是数字

+1

“猫”或“狗”是一个数字?为什么“猫”>“狗”的数字逻辑? – 2010-12-05 00:46:28

+0

你能详细说明你的情况吗?你只是想能够比较字符串?或者你想为特定的词赋予特殊的价值,并且有一个比另一个“更大”? – akf 2010-12-05 00:53:06

+0

我想做后者。 – 2010-12-05 00:56:00

回答

-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; 
} 
1

你不行。这需要operator overloading,其中Java won't let you

+0

嗯,+运营商?它的确如此,你无法定义你自己的版本。 – 2010-12-05 01:33:32

0

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

0

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

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

不能使用运营商(例如"Cat" < "Dog")你的建议。正如@larsmans所说,这将需要Java不提供的操作符重载。但是,你仍然可以比较使用"Cat".compareTo("Dog")如果两个字符串相等,返回0的字符串,大于0的号码,如果"Cat""Dog"lexicographically,或以其他方式负数。

this page