我有一个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布尔值相比。但是我不知道该如何解决。请告知。
答案 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条件获取false
或true
,直到您完成整个循环为止,因为您没有使用任何{{ 1}}或找到匹配项后将退出循环。
例如,如果break
,它将在argument = 'p'
处找到匹配项,因此letter='p'
将被设置为acceptArgument
。但是,循环前进到下一个字母true
,因为q
,p != q
将设置为acceptArgument
并继续这样。这就是为什么它无法按预期工作的原因。
请参阅下面的更正
要更正您的代码,请进行以下修改
首先初始化;
false
第二次删除boolean acceptArgument=false;
应该是这样
else
有效。