我正在尝试检查一个单词是否仅包含一组字母,例如I,O,S,H和X假设用户输入:SSHX,输出将为yes,但是如果用户输入SHEXX,则输出将为NO
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word = sc.next();
word = word.toUpperCase();
int length = word.length();
char letter = 0;
for (int counter = 0; counter < length; counter++) {
letter = word.charAt(counter);
}
if (letter != 'I' && letter != 'O' && letter != 'S' && letter != 'H' && letter != 'Z' && letter != 'X' && letter != 'N') {
System.out.print("NO");
} else {
System.out.print("YES");
}
}
您有解决它的好方法。问题是您实际上并没有检查每个字母,因此您需要在for循环内进行检查,否则您将只检查最后一个字母。但是那样就无法打印“ YES”,因为仅在所有字母均为“ YES”时才打印它,因此您也可以使用布尔值来检查它,例如:
boolean isMatch = true;
for (int counter = 0; counter < strLength && isMatch; counter++) {
letter = word.charAt(counter);
if (letter != 'I' && letter != 'O' && letter != 'S' && letter != 'H' && letter != 'Z' && letter != 'X' && letter != 'N') {
System.out.print("NO");
isMatch = false;
}
}
if (isMatch) {
System.out.print("YES");
}
但是,正如其他人指出的那样,使用正则表达式会更有效(并且该正则表达式可以满足您想要的正则表达式。星号表示括号内的零个或多个。):
if (word.matches("[HIOSX]*")) {
System.out.print("YES");
} else {
System.out.print("NO");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句