2013-12-08 3 views
3
if (flipped.charAt(0) = "a" || "e" || "i" || "o" || "u"){ 
    paren = "(" + flipped; 
    String firstpart = paren.substring(0,5); 
    String rest = paren.substring(5); 
    System.out.println(rest+firstpart); 
} 

이 코드에서는 뒤집힌 문자열의 첫 번째 문자가 모음인지 확인하려고합니다. 그럴 경우 처음에 괄호를 추가하고 처음 5자를 문자열 끝으로 이동합니다. 이클립스는 나를 java.lang.NullPointerException으로 지정하고 "할당의 왼쪽은 변수 여야합니다."라고 말합니다. 이 문제를 해결하려면 어떻게해야합니까?문자열이 모음으로 시작하는지 확인하는 내 코드가 컴파일되지 않는 이유는 무엇입니까?

+3

'flipped.charAt (0) = "A" || "e"|| "나"|| "o"|| "u"'- 유효한 문법은 어디서 읽었습니까? –

+0

여기를보세요 http://stackoverflow.com/questions/19160921/how-do-i-check-if-a-char-is-a-vowel – lummycoder

+2

|| 조건에 대한 옵션을주는 것보다는 ** 완전한 ** 조건을 분리하므로, || 자체적으로 if 문을 사용할 수 있습니다. 그래서 == 0 || 1이 유효하지 않습니다. a == 0 || a == 1은 유효합니다. –

답변

4

이러한 모든 값을 보유하는 모음을 사용하십시오.

Set<Character> myList = new HashSet<Character>(Arrays.asList('a', 'e', 'i', 'o', 'u')); 

if(myList.contains(Character.toLowerCase(flipped.charAt(0)))) { 
    // Do work 
} 

이 줄의 코드 :

if (flipped.charAt(0) == "a" || "e" || "i" || "o" || "u"){ 

먼저 부울을 반환 flipped.charAt(0) == "a"을 비교합니다 (잘못 동안 = 할당됩니다, == 비교됩니다). 그런 다음 boolean || "e" || "i" || "o" || "u"과 함께 계속됩니다.

boolean || "e"은 (는) 유효한 코드가 아닙니다.

+0

괄호가 누락되었습니다. –

+1

세트 사용! 'contains'를 사용하려고한다면, 항상'Set'을 사용하십시오. –

+0

전화하세요. 'Set'으로 변경했습니다. –

10

코드는,

  1. 사용 조건 연산자 == 대신 if 문에 할당 =을 다음과 같은 문제가 있습니다.
  2. 를 사용하여 단일 인용 ' 대신 더블 "char
  3. 에 대한이 모음 검사에 대해 별도의 방법을 확인하십시오.

    boolean isVowel(char ch){ 
        ch=Character.toLowerCase(ch); 
        return ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u'; 
    } 
    
8

내가 자주 사용하는 또 다른 아주 간단한 해결책 :

if ("aeiou".indexOf(Character.toLowerCase(text.charAt(0))) >= 0) { 
    // text starts with vocal. 
} 
6

또한 정규 표현식 매칭을 사용할 수 있습니다

if (text.matches("^[aeiou].*")) { 
+0

text.matches ("(? i)^[aeiou]. *")는 대소 문자를 구별하지 않습니다. – yatendra

관련 문제