Сравните строки, как если бы они были числами - PullRequest
4 голосов
/ 05 декабря 2010

Мне было интересно, можно ли сравнивать строки, как если бы они были числами. Например, есть ли способ сделать так, чтобы "Cat" > "Dog"

Ответы [ 7 ]

5 голосов
/ 05 декабря 2010

Вы не можете использовать операторы (например, "Cat" < "Dog"), как вы предлагаете.Как говорит @larsmans, для этого потребуется перегрузка операторов, чего не обеспечивает Java.Однако вы все равно можете сравнить строки, используя "Cat".compareTo("Dog"), который возвращает 0, если строки равны, число больше 0, если "Cat" равно лексикографически меньше "Dog", или отрицательное число в противном случае.

См. эту страницу

4 голосов
/ 05 декабря 2010

Просто реализуйте интерфейс Comparator и выполняйте сравнение любым удобным вам способом.

Вот Javadoc

1 голос
/ 05 декабря 2010

Вы не можете. Это потребует перегрузки оператора , что Java не позволит вам .

0 голосов
/ 05 декабря 2010

Поскольку единственный способ сделать это - сохранить заданное значение для каждого слова, вы бы использовали массивы или какую-то другую форму хранения данных.

Вот пример, где вы просто храните слова и их соответствующие значения в двух массивах (обратите внимание, они должны быть в том же порядке, поэтому первое слово соответствует первому числу и т. Д.).

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;
}
0 голосов
/ 05 декабря 2010

Вам нужно использовать какой-либо метод, как показано ниже:

int compare(String s1, String s2);   // write code to do comparison.
0 голосов
/ 05 декабря 2010

Вы можете использовать метод compareTo в String

0 голосов
/ 05 декабря 2010

Нет, не существует. Вы должны использовать compareTo ().

...