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

for-each loop, attempting to use equalsIgnoreCase() method

我的第一个问题:

目前我在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;
        }
    }
}

基本上我想做的是让 validName 可以在循环语句中使用任何情况。显然我没有正确执行此操作。如果有人能提供帮助,我会提供更多代码。

您的问题是,在检查 array/list 中的第一个字符串后,您 return 为真或假,因此如果列表中的第一个字符串与传递的字符串不同它会忽略所有内容和 return false。

只有在匹配时才 return 为真,如果不匹配,则什么也不做。循环后 return false.

因此,如果它有效,它将 return 为真并转义该方法,如果它检查了所有可能性并且没有匹配项,则 return 为假。

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

我想这就是您要找的:

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

此外,由于您正在遍历 validStateProvince,因此您想将其与 temp 进行比较。