Java:如何循环遍历数组并检查它是否与变量值匹配?
我有一个char类型的参数。我想检查这个字符是否是小写,如果这是真的,那么我将使一个布尔变量等于真,否则,使它等于假。我创建了一个字符数组:Java:如何循环遍历数组并检查它是否与变量值匹配?,java,loops,scope,boolean,arguments,Java,Loops,Scope,Boolean,Arguments,我有一个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
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'};
然后我尝试了两种不同的解决方案,但每一种都超出了我的Acceptorgument boolean的范围
第一:
for (int i = 0; i < 27; i++) {
if (argument == lowerCaseAlphabet[i]) {
acceptArgument = true;
} else {
acceptArgument = false;
}
}
我理解为什么它不起作用,因为和acceptArgument布尔值相比,if语句的范围很广。但我不知道该怎么解决这个问题。请告知。此操作不需要额外的阵列。通过将结果与Character.toLowerCase(char)等进行比较,可以检查
参数
是否为小写
char argument = argumentStr.charAt(0);
boolean acceptArgument = argument == Character.toLowerCase(argument);
boolean acceptArgument = Character.isLowerCase(argument);
或(正如@jbnitet所指出的)使用字符。isLowerCase(char)
类似
char argument = argumentStr.charAt(0);
boolean acceptArgument = argument == Character.toLowerCase(argument);
boolean acceptArgument = Character.isLowerCase(argument);
如果您还需要测试字符是否为字母,则可以添加and
boolean acceptArgument = Character.isLetter(argument)
&& Character.isLowerCase(argument);
我理解为什么它不起作用,因为和acceptArgument布尔值相比,if语句的范围很广
不。原因不是范围,这是因为在每次迭代中,acceptorgument
都会根据if条件获取false
或true
,直到它完成整个循环,因为您没有使用任何break
或在找到匹配项时从循环中获取的内容
例如,如果参数='p'
,它将在字母class='p'
处找到匹配项,因此接受参数
将设置为真
。但是,循环前进到下一个字母q
,因为p!=q
,验收参数
将设置为false
,并继续这样操作。这就是为什么它没有达到你所期望的效果
请参见下面的更正
要更正代码,请进行以下修改
首先初始化
boolean acceptArgument=false;
第二步删除否则
应该是这样
for (char letter: lowerCaseAlphabet) {
if (argument == letter)
acceptArgument = true;
}
它可以工作。添加
中断
afteracceptorgument=true代码>不,这不是范围问题。使用您的调试器,或者在if和else中添加println()语句,您应该了解原因。为什么不直接调用isLowerCase()?@JBNizet或那样的语句呢严格地说,它不是等价的,“э”是小写,但不是在a-z
@ElliottFrisch中。我还应该提到,我需要的参数只能是字母,不能是数字或特殊字符。在这种情况下我该怎么办?