我要这样做,以便仍然可以检测到简短的输入,例如“ Londo”和“ Lon”,但是要使其较小并在基本上不复制和粘贴代码的情况下使用它,有什么提示吗?谢谢。
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("");
}
答案 0 :(得分:3)
您可以使用startsWith()
String city = "London";
if (city.startsWith("Lon")) {
// do something
}
答案 1 :(得分:1)
此外,如果您需要检查一些子字符串,则可以使用contains
方法:
Menu.answer1 = "London";
Menu.answer1.contains("ondo"); // true
答案 2 :(得分:0)
如果要检查一组固定的替代方法,可以使用contains
使用有效输入的列表:
List<String> londonNames = Arrays.asList("London", "Londo", "Lon");
if (londonNames.contains(Menu.answer1)) {
...
}
答案 3 :(得分:0)
您可以使用(case-insensitive
)正则表达式执行相同操作,例如:
(?)Lon[a-z]{0,3}
其中
这是一个例子:
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));
答案 4 :(得分:0)
如果潜在的问题是用户可以输入多个名称之一,而您想允许缩写,那么一种相当标准的方法是拥有一个可接受名称的表。
给出用户输入,循环遍历表测试“表条目是否以用户键入的字符串开头?” (就像这里以前的答案之一一样)。如果是,则您具有潜在匹配项。
继续看。如果您获得 second 匹配项,则用户输入不明确,应予以拒绝。
作为奖励,您可以收集所有匹配的名称,然后在错误消息中使用它们。 (“选择伦敦,隆富,隆巴的其中一个”。
此方法的优点是(与一长串的if-then-else逻辑相比),当您只想拥有更多数据时,不需要编写更多代码。
它会自动使用最短的唯一缩写,并会在由于新添加的名称而使曾经唯一的缩写不再唯一时进行调整。