Je veux faire cela pour que les entrées courtes puissent toujours être détectées, telles que "Londo" et "Lon", mais je veux le garder petit et l'utiliser sans copier et coller le code, des conseils? merci.
if (Menu.answer1.equals("London"))
{
if (location.equals("London")) {
System.out.print(location + " ");
System.out.print(date + " ");
System.out.print(degrees + "C ");
System.out.print(wind + "MPH ");
System.out.print(winddirection + " ");
System.out.print(weather + " ");
System.out.println("");
}
5 Réponses :
Vous pouvez utiliser startsWith ()
String city = "London";
if (city.startsWith("Lon")) {
// do something
}
Pour dire l'évidence: seul, (1) qui permet à l'utilisateur de taper Lonxxxxxx et d'obtenir des données de Londres, et (2) si jamais vous avez besoin d'ajouter une ville nommée "Lonsomethingelse", vous devrez ajuster votre code.
De plus, si vous avez besoin de vérifier une sous-chaîne, vous pouvez utiliser la méthode contains :
Menu.answer1 = "London";
Menu.answer1.contains("ondo"); // true
d'accord, beau concept cependant, je l'aime bien.
Si vous voulez vérifier par rapport à un ensemble fixe d'alternatives, vous pouvez utiliser une liste d'entrées valides en utilisant contains:
List<String> londonNames = Arrays.asList("London", "Londo", "Lon");
if (londonNames.contains(Menu.answer1)) {
...
}
Vous pouvez utiliser ( insensible à la casse ) regex pour faire de même, par exemple:
(?) Lon [az] {0,3} où
Voici un exemple:
String regex = "(?)Lon[a-z]{0,3}";
System.out.println("London".matches(regex));
System.out.println("Lond".matches(regex));
System.out.println("Lon".matches(regex));
Si le problème sous-jacent est que l'utilisateur peut saisir l'un de plusieurs noms et que vous souhaitez autoriser les abréviations, une approche assez standard consiste à avoir une table de noms acceptables.
Compte tenu de l'entrée de l'utilisateur, parcourez la table en testant "L'entrée de la table commence-t-elle par la chaîne saisie par l'utilisateur?" (comme l'une des réponses précédentes ici). Si oui, vous avez une correspondance potentielle .
Continuez à chercher. Si vous obtenez une seconde correspondance, la saisie de l'utilisateur était ambiguë et devrait être rejetée.
En prime, vous pouvez collecter tous les noms qui correspondent, puis les utiliser dans un message d'erreur. ("Choisissez l'un de Londres, Lonfoo, Lonbar").
Cette approche a l'avantage (par rapport à une longue chaîne de logique if-then-else) de ne pas vous obliger à écrire plus de code alors que tout ce que vous voulez faire est d'avoir plus de données.
Il autorise automatiquement l'abréviation unique la plus courte et s'ajustera lorsqu'une abréviation une fois unique n'est plus unique en raison de noms nouvellement ajoutés.
Lonely doit-il être traité comme Londres ?