[英]Check if a string contains only a set of letters
我試圖檢查一個單詞是否只包含一組字母,如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”,因為如果所有字母都是肯定的,你只想打印它,所以你也可以使用布爾值來檢查它,如下:
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");
}
使用正則表達式 。
String regex = "[OSXHI]*";
String string = "SOMETHING";
Matcher matcher = Pattern.compile(regex).matcher(string);
if (matcher.find())
{
String match = matcher.group(1);
System.out.println(match);
}
一些額外的資源:
除了使用正則表達式的明顯答案之外,請考慮使用Google的Guava API來實現這一點:
if(CharMatcher.anyOf("HIOSX").matchesAllOf(word)) {
} ...
使用正則表達式:
if (word.matches("[HIOSX]+"))
System.out.println("YES");
else
System.out.println("NO");
首先你應該像這樣初始化字母: char letter = '0';
而不是0秒所有你的for循環使用不當嘗試此代碼:
boolean isInSet;
for (int counter = 0; counter < strLength; counter++)
{
letter = word.charAt(counter);
if (letter != 'I' && letter != 'O' && letter != 'S' && letter != 'H' && letter != 'Z' && letter != 'X' && letter != 'N')
{
isInSet=false;
counter=strlength; //end loop
}
else
{
isInSet=true;
}
}
if(isInSet=true)
{
System.out.print("YES");
}
else
{
System.out.print("NO");
}
現在循環將循環遍歷字符串並檢查每個字符是否在集合中,如果循環結束並且布爾值設置為false,則導致NO輸出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.