for-each循环,尝试使用equalsIgnoreCase()方法

时间:2015-03-22 22:30:55

标签: java for-loop bluej

我的第一个问题:

目前我在BlueJ有一项工作,我需要申请。每个循环。 我的代码如下:

我的构造函数:

if(isValidPopulation(populationInMillions) && isValidStateProvinceName(provinceStateName) && isValidCapitalCity(provinceStateCapital)) {
         this.populationInMillions   = populationInMillions;
         this.provinceStateName      = provinceStateName;
         this.provinceStateCapital   = provinceStateCapital;
}

有助于我的构造函数的方法之一:

private boolean isValidStateProvinceName(String validName)
{
    for(String temp : validStateProvince)
    {
        if(validStateProvince.contains(temp.equalsIgnoresCase(validName))) {
            return true;
        } else {
            return false;
        }
    }
}

基本上我希望make是这样,validName可以在循环语句中使用任何情况。显然我正在执行这个错误。如果有人能帮助我,我会提供更多代码。

2 个答案:

答案 0 :(得分:3)

我认为这就是你要找的东西:

private boolean isValidStateProvinceName(String validName)
{
    for(String temp : validStateProvince)
    {
        if(temp.equalsIgnoresCase(validName)) {
            return true;
        }
    }
    return false;
}

此外,由于您正在通过validStateProvince进行迭代,因此您希望将其与temp进行比较。

答案 1 :(得分:1)

您的问题是在检查数组/列表中的第一个字符串后,您返回true或false,因此如果列表中的第一个字符串与传递的字符串不同,它将忽略所有内容并返回false。

如果匹配则只返回true,否则返回true,然后不执行任何操作。循环返回false后。

所以如果它是有效的,它将返回true并转义该方法,如果它检查所有可能性并且没有匹配则返回false。

private boolean isValidStateProvinceName(String validName)
{
    for(String temp : validStateProvince)
    {
        if(validStateProvince.contains(temp.equalsIgnoresCase(validName))) {
            return true;
        }
    }
    return false;
}

你也不需要做.contains,因为你已经在检查它是否匹配,所以只需执行以下操作

if(temp.equalsIgnoresCase(validName)) {
    return true;
}

如果要检查字符串是否包含省,请执行以下操作

if(temp.toLowerCase().contains(validName.toLowerCase())) {
    return true;
}

希望这有用:D