Je me demandais s'il était possible de comparer les chaînes comme s'il s'agissait de nombres. Par exemple, est-il possible de faire en sorte que "Cat" > "Dog"
Comparer les chaînes comme si elles étaient des nombres
Répondre
Puisque la seule façon de le faire est de garder une valeur de consigne pour chaque mot, vous seriez en utilisant des tableaux, ou une autre forme de stockage de données.
Voici un exemple où vous gardez juste les mots, et leurs valeurs correspondantes dans deux tableaux (notez, ils doivent être dans le même ordre, ainsi le premier mot correspond au premier nombre, etc.).
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;
}
Vous ne pouvez pas. Cela nécessiterait operator overloading, Java won't let you.
Ummm, + opérateur? C'est le cas, vous ne pouvez pas définir vos propres versions. –
Non, n'existe pas. Vous devez utiliser compareTo().
String.compareTo existe déjà, nous devrions donc implémenter l'interface 'Comparator'. –
Vous pouvez utiliser la méthode compareTo
dans String
Je pense que OP veut changer le comportement de '.compareTo()'. –
Juste implémenter l'interface et mettre en œuvre la Comparator comparaison comme vous le souhaitez.
Vous devez utiliser une méthode comme ci-dessous:
int compare(String s1, String s2); // write code to do comparison.
Vous ne pouvez pas utiliser les opérateurs (par exemple "Cat" < "Dog"
) comme vous le suggérez. Comme le dit @larsmans, cela nécessiterait une surcharge de l'opérateur que Java ne fournit pas. Cependant, vous pouvez toujours comparer les chaînes en utilisant "Cat".compareTo("Dog")
qui renvoie 0 si les chaînes sont égales, un nombre supérieur à 0 si "Cat"
est lexicographically inférieur à "Dog"
, ou un nombre négatif sinon.
Voir this page
Comment "Cat" ou "Dog" est-il un nombre? Pourquoi "Cat"> "Dog" par la logique des nombres? –
Pouvez-vous élaborer sur votre scénario? Voulez-vous juste pouvoir comparer les chaînes? ou voulez-vous attribuer des valeurs spéciales à des mots spécifiques et en avoir un plus grand qu'un autre? – akf
Je voudrais faire le dernier. –