为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2021-09-29 13:19:07
我有一个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 语句的范围。但我不知道如何解决这个问题。请指教。
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

为此,您不需要额外的数组。您可以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) 

        && Character.isLowerCase(argument);


查看完整回答
反对 回复 2021-09-29
?
忽然笑

TA贡献1806条经验 获得超5个赞

我理解为什么它不起作用,因为与 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) {

    if (argument == letter) 

        acceptArgument = true;          

}

有用。


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 240 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信