我有一个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布尔值相比。但是我不知道该如何解决。请指教。
最佳答案
我知道为什么它不起作用,因为if语句的范围与acceptArgument布尔值相比
不,原因不在范围内,这是因为每次迭代acceptArgument
都会根据if条件获取false
或true
直到完成整个循环,因为您没有使用任何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;
}
有用。