2010-12-05 43 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