Java:如何遍历数组并检查其是否与变量值匹配?

时间:2018-09-19 16:47:15

标签: java loops scope boolean arguments

我有一个char类型的参数。我要检查此char是否为小写,如果为true,则使布尔变量等于true,否则使它等于false。我创建了一个字符数组:

String argumentStr = args[2];
char argument = argumentStr.charAt(0);
boolean acceptArgument;

char[] lowerCaseAlphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
                            'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

然后我尝试了两种不同的解决方案,但是每种解决方案都不在我的acceptArgument布尔值范围之内。

第一:

for (int i = 0; i < 27; i++) {
        if (argument == lowerCaseAlphabet[i]) {
            acceptArgument = true;
        } else {
            acceptArgument = false;
        }
    }

第二:

for (char letter: lowerCaseAlphabet) {
        if (argument == letter) {
            acceptArgument = true;
        } else {
            acceptArgument = false;
        }
    }

我理解为什么它不起作用,因为if语句的范围与acceptArgument布尔值相比。但是我不知道该如何解决。请告知。

2 个答案:

答案 0 :(得分:1)

您不需要额外的数组。您可以通过将结果与argument进行比较来检查Character.toLowerCase(char)是否为小写字母,例如

char argument = argumentStr.charAt(0);
boolean acceptArgument = argument == Character.toLowerCase(argument);

(如@JBNizet所指出的)使用Character.isLowerCase(char)就像

boolean acceptArgument = Character.isLowerCase(argument);

如果您还需要测试字符是否为字母,则可以添加和,例如

boolean acceptArgument = Character.isLetter(argument) 
        && Character.isLowerCase(argument);

答案 1 :(得分:0)

  

我理解为什么它不起作用,因为if语句的范围与acceptArgument布尔值相比

不。原因不是范围,这是因为acceptArgument在每次迭代时都基于if条件获取falsetrue,直到您完成整个循环为止,因为您没有使用任何{{ 1}}或找到匹配项后将退出循环。

例如,如果break,它将在argument = 'p'处找到匹配项,因此letter='p'将被设置为acceptArgument。但是,循环前进到下一个字母true,因为qp != q将设置为acceptArgument并继续这样。这就是为什么它无法按预期工作的原因。

请参阅下面的更正

要更正您的代码,请进行以下修改

首先初始化;

false

第二次删除boolean acceptArgument=false; 应该是这样

else

有效。