我不完全确定如何说出来。我想知道如何检查变量中是否存在多个字符串中的一个。 我被告知这会起作用,但是没有按照我的预期进行。
String lett2array=arr[i];
String[] lett=lett2array.split("");
int y = 0;
while(y != lett.length){
if(lett[1].equals("a")||lett[1].equals("e")||lett[1].equals("i")||lett[1].equals("o")||lett[1].equals("u")){
inputField.append(" \n"+lett[y]);
}
答案 0 :(得分:3)
您的代码以非常迂回的方式编写。
.split("")
以下是我写的方式:
String str = arr[i];
char[] letters = str.toCharArray();
boolean secondLetterIsVowel = letters[1] == 'a'
|| letters[1] == 'e'
|| letters[1] == 'i'
|| letters[1] == 'o'
|| letters[1] == 'u';
for(char letter : letters) {
if(secondLetterIsVowel) {
inputField.append(" \n" + letter);
}
//...
}
答案 1 :(得分:1)
您应该使用||
,而不是|
if(lett[1].equals("a") || lett[1].equals("e") || lett[1].equals("i") || lett[1].equals("o") || lett[1].equals("u")) {
inputField.append(" \n"+lett[y]);
}
|
是按位或运算符,而||
是短路逻辑或运算符。
答案 2 :(得分:1)
使用Apache Commons:
StringUtils.startsWithAny(String string, String [] searchStrings)
更多信息:http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html
此致
答案 3 :(得分:0)
你用过了(按位OR)代替|| (逻辑或)
每当你想'测试条件一或条件2'时,使用'||'。
答案 4 :(得分:0)
如果你有这样的事情:
if( a.equals( b ) || a.equals( c ) || a.equals( d ) )
您可以将其重写为:
if( Arrays.asList( b,c,d).contains( a ) )
当然,如果b,c和d是常量,你也可以将列表创建为常量。
答案 5 :(得分:0)
这是我的解决方案。使用charAt(int index)
代替split
,这是O(n)时间复杂度,并且比较chars
,而不是String
,它会更快。
String currString = arr[i]; // Get the current string
char secondLet = currString.charAt(1); // Get the second letter
// chars are primitive, so == will suffice
if(secondLet == 'a' || secondLet == 'e'
|| secondLet == 'i' || secondLet == 'o' || secondLet == 'u') {
// The second letter is a vowel!
// Do whatever you want to do.......
// I didn't understand if you wanted to output the whole String,
// Or just the vowels. Whatever. Just do what you want.
}