2015-02-04 5 views
-3

다음은 문자열의 각 문자가 (내가 짧은 조건 코드

if(word.charAt(i) == 'a' || word.charAt(i) == 'e' || word.charAt(i) == 'i' || word.charAt(i) == 'o' 
        || word.charAt(i) == 'u') 

내가 word.charAt을 계속 반복해야합니까 모음인지 아닌지 확인하기 위해 내 코드입니다) 자바의 각 모음에 대해? 코드에서 5 번 반복합니다. 더 짧은 방법이 있습니까, 아니면 논리에 대한 조건을 형성 할 때 반복 코드가 필요합니까? 내 마음에 온천

+0

개별 문자에 액세스하지 않아야합니다. 자세한 내용은 내 대답을 참조하십시오. – laune

+0

@laune 아래에 귀하의 의견에 대한 내 대답을 참조하십시오. – Nicholas

답변

1

같은 함수를 만들고 모든 곳에서 사용할 수 있습니다.

isVowel(word,i); 
3

한 짧은 부울 테스트는

"aeiou".contains(Character.toString(word.charAt(i))) 
+0

문자열과 문자 사이를 앞뒤로 이동하지 않아도됩니다. 짧은 단어 :''aeiou ".contains (word.substring (i, i + 1))'하지만 하나의 문자열을 테스트 할 수 있습니다. – laune

+0

@laune OP가 모음의 수를 계산하려고한다면 어떻게 될까요? OP가 'String'이 모음으로 구성되어 있는지를 확인하고 싶다면 그 정규 표현식이 좋다는 것에 동의합니다.하지만 그 질문에 아무것도 표시하지 않습니다. 마지막으로,'Character.toString()'을 사용하는 것은 이미 약간의 최적화입니다. OP의 목적은 더 짧은 코드였습니다 ... "aeiou"를 사용할 수있었습니다. "(" "+ word.charAt (i))'짧은, **하지만 못생긴 **). –

+0

어쩌면 저의 영어 이해력이 충분하지 않을 수도 있습니다. 그러나 "모든 문자열이 모음인지 아닌지 확인하십시오."라는 말은 모든 것이 모음인지 확인하는 것을 의미합니다. 이제 * single * 모음이있는 경우 true를 반환하는 대답을 얻었으므로 정규식을 약간 변경하여 내 대답을 수정합니다. – laune

1
String vowel ="aeiou"; 

if(vowel.contains(word.charAt(i)+"")) 
{ 

} 
1

public function isVowel(String word, int index){ 
    return "aeiou".contains(Character.toString(word.charAt(i))); 
    } 

전화는 심지어 개별 문자에 액세스하지 않아야

if(word.matches("^[aeiou]+$")){ 
    // all vowels 
} 
if(word.matches(".*[aeiou].*")){ 
    // one vowel 
} 

int count = word.length() - word.replaceAll("[aeiou]", "").length(); 
// or 
int count = word.replaceAll("[^aeiou]", "").length(); 
+0

하지만 문자열의 모음 수를 계산해야합니다. 귀하의 코드는 문자열이 matches 메소드에 전달 된 인수와 일치하는지 검사합니다. – Nicholas

+0

@Nicholas 귀하가 선택한 질문이나 답변 중 귀하가 의지해야 할 것이 없음을 나타냅니다. – laune

+0

@Nicholas 이제 계산이 추가되었습니다. – laune

0
는 "AEIOU".indexOf을 사용할 수 있습니다

을 (word.charAt (I)) < 0 그러나 새로운 캐릭터 라인이 생성되고 그에 대한 프로세스가 조회되기 때문에 성능이 좋지 않을 것입니다. 확실하지 않습니다. D