在if语句中检查多个字符串的最佳方法

时间:2015-08-04 23:30:59

标签: java string if-statement

在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)
}

但看起来很糟糕

顺便说一句,我不会一遍又一遍地检查法国的原型代码,所以我没有进入每个欧元区而没有检查是否有更好的方法。

7 个答案:

答案 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_FRA
  • E_BEL
  • E_GER
  • ...

E

亚洲国家:

  • A_CHN
  • A_MLY
  • A_PHL
  • ...

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

        }

    }
}