2017-03-29 1 views
1

IDE가 NullPointerException을 던졌습니다. 선택해야 할 성별이 2 명뿐입니다.String in switch를 사용하는 방법?

public String typeOfGender 
    { 
     switch (typeOfGender) 
     { 
      case "Male": 
        typeOfGender = "Male"; 
        break; 
      case "Female": 
        typeOfGender = "Female"; 
        break; 
      default: 
        System.out.println(" Unrecognized gender."); 
     } 
    } 
+2

이 방법은 NPE를 throw하는 유일한 방법은'typeOfGender'가'null' 인 경우입니다. –

+0

initialize typeOfGender = "" –

+1

"enum"을 사용하십시오. 'String' 값은 타입 안전하지 않으므로 철자를 잘못 기입하기 쉽습니다. –

답변

0

나는 아무런 문제없이 자주 사용 아래 예. 네가 그것을 던질 유일한 이유는 네가 null을 넘기는 경우 뿐이다.

private string GetMailBody(string regionCode) 
{ 
    switch(regionCode) 
    { 
     case "qc": 
      //Do some stuff 
      break; 

     default: 
      //If not specified, we assume US, so we do that. 
      break; 
    } 

    return "String we should have edited above"; 
} 
+0

그리고 어떻게이 객체의 생성자에 넣을 수 있습니까? Human (int 연령, int 가중치, int 높이, 문자열 이름, 문자열 typeOfGender) { super(); this.age = age; this.weight = weight; this.height = height; this.name = name; this.typeOfGender = typeOfGender; } "기호를 해결할 수 없습니다." – joedoe

+0

이 사이트는 http://www.java2novice.com/java_constructor_examples/constructor_with_parameters/에 생성자의 좋은 예가 있습니다. 간단히 추가 할 수 있습니다. 붙여 넣은 코드는 형식이 지정되지 않았으므로 지금은 형식을 지정할 수있는 권한이 없습니다. –

+0

오라클에는 스위치에 문자열을 사용하는 방법에 대한 기사도 있습니다. http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html –

1

typeOfGender를 초기화하지 않았습니다. null입니다. 그래서 이유가 있습니다. 시도해보십시오

typeOfGender="Male"; 

그런데 코드가 의미가 없습니다. typeOfGender가 "Male"과 같으면 "Male"을 할당합니다.

+0

나는 그들이 예를 들어 그렇게한다고 생각하고있다. –

0

문자열이 null이기 때문에 NullPointerExeption이 발생합니다.

그러나, 향후 참조를 위해, 여기에 문자열 스위치의 경우 등의 예 :

String string = "foo"; 
    switch (string) { 
     case "foo": 
      System.out.println("foo"); 
      break; 
     case "bar": 
      System.out.println("bar"); 
      break; 
     default: 
      System.out.println("Mushroom Stew!"); 
      break; 
    }