在if语句中检查多个字符串的最简洁方法是什么,我希望能够检查用户国家是否是使用欧元的国家,我将放入(“???”)。因为这有用。
if (usercountry.equals("FRA") || usercountry.equals("FRA")||
usercountry.equals("FRA") || usercountry.equals("FRA") ||
usercountry.equals("FRA") || usercountry.equals("FRA") ||
usercountry.equals("FRA") || usercountry.equals("FRA") ||
usercountry.equals("FRA")) {
costpermile = costpermile*1.42; //(costpermile=£) (costpermile*1.42=Euros)
}
但看起来很糟糕
顺便说一句,我不会一遍又一遍地检查法国的原型代码,所以我没有进入每个欧元区而没有检查是否有更好的方法。
答案 0 :(得分:3)
<强> 1。正则表达式强>
if (usercountry.matches("FRA|GER|ITA"))
{
costpermile = costpermile*1.42;
}
<强> 2。将国家/地区添加到数据结构(设置)并选中
Set<String> eurocountries= new HashSet<String>();
eurocountries.add("FRA");eurocountries.add("GER");eurocountries.add("ITA");
if (eurocountries.contains(usercountry))
{
costpermile = costpermile*1.42;
}
注意:我认为它是您正在寻找的正则表达式方法
答案 1 :(得分:1)
如果您正在使用Java 7或更高版本,则可以对字符串使用switch语句,如此
switch(userCountry)
{
case "FRA":
costpermile = costpermile*1.42;
break;
default:
break;
}
然后你可以添加你需要的其他任何案例。
答案 2 :(得分:1)
你可以将字符串存储在一个数组中,然后像这样迭代它:
String[] str = {"EN", "FRA", "GER"};
for (String s : str) {
if (usercountry.equals(s)) {
// Match: do something...
}
}
答案 3 :(得分:1)
正如其他人所建议的那样,您可以使用Set
来存储国家/地区代码:
private static final Set<String> EURO_COUNTRIES
= new HashSet<>(Arrays.asList("FRA", "ESP", "ITA", "GER" /*etc..*/));
然后在您的代码中,您可以通过以下方式检查国家/地区:
String userCountry = Locale.getDefault().getISO3Country();
if (EURO_COUNTRIES.contains(userCountry)) {
// do something
}
但是,更好的长期解决方案可能是创建一个丰富的enum
,特别是如果您需要使用这些国家/地区代码添加更多逻辑。
答案 4 :(得分:0)
你可以这样做:
String euroCountries [] = {"FRA", "DEU", ...}
public boolean isEuroCountry(String userCountry){
for(String country : euroCountries){
if(usercountry.equals(country)){
return true;
}
}
return false;
}
答案 5 :(得分:0)
您可以为属于特定洲的每个国家/地区附加前缀,然后只检查该令牌。 对于例如在欧洲国家:
将 E
亚洲国家:
将 A ,依此类推。
if ( userCountry.startsWith("E") ) {
// Europe countries
} else
if ( userCountry.startsWith("A") ) {
// Asian countries
}
...
答案 6 :(得分:0)
String countries[] = {"FRA", "GER", "ENG"} // declaration of the countries you want to list.
// function to calculate the cost per mile
public double calculateCostPerMile(String userCountry){
double costPerMile;
for(String country: countries){
if(country.equals(userCountry)){
return costPerMile*1.42; // return value
}
}
}