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

我有一个char类型的参数。我想检查这个字符是小写的,如果这是真的,那么我会让一个布尔变量等于真,否则,让它等于假。我创建了一个字符数组:


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;

        }

    }

我理解为什么它不起作用,因为与 acceptArgument 布尔值相比 if 语句的范围。但我不知道如何解决这个问题。请指教。


慕村225694
浏览 241回答 2
2回答

尚方宝剑之说

为此,您不需要额外的数组。您可以argument通过将结果与Character.toLowerCase(char)like进行比较来检查是否是小写char argument = argumentStr.charAt(0);boolean acceptArgument = argument == Character.toLowerCase(argument);或(如@JBNizet 所指出的)使用Character.isLowerCase(char)像boolean acceptArgument = Character.isLowerCase(argument);如果您还需要测试该字符是否为字母,您可以添加一个 and 之类的boolean acceptArgument = Character.isLetter(argument)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; && Character.isLowerCase(argument);

忽然笑

我理解为什么它不起作用,因为与 acceptArgument 布尔值相比 if 语句的范围不。原因不是范围,而是因为在每次迭代中,在完成整个循环之前都在acceptArgument获取false或true基于 if 条件,因为break在找到匹配项时,您没有使用任何或任何内容退出循环。例如,如果argument = 'p',它将在 处找到匹配项letter='p',因此acceptArgument将设置为true。然而,循环前进到下一个字母q,因为p != q,acceptArgument将被设置为false并继续这样。这就是为什么它没有按您的预期工作。请参阅下面的更正要更正您的代码,请进行以下修改首先初始化;boolean acceptArgument=false;第二次删除else它应该是这样的for (char letter: lowerCaseAlphabet) {&nbsp; &nbsp; if (argument == letter)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; acceptArgument = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;}有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java