2014-10-28 2 views
4

getGender()을 실행할 때마다 null으로 표시됩니다. 저를 혼란스럽게하는 것은 isMale입니다.getGender() isMale을 사용하여 null을 반환합니다.

public Student(String sid, String name, boolean isMale) 
{  
    this.sid = sid; 
    this.name = name; 
    this.isMale = isMale; 
    courses = "30202"; // default is empty 
} 

나는 값을 반환 할 수 만들었 그러나 "true"또는 "false"로 반환하고 "남성"또는 "여성"으로 반환하지 않습니다 그러나 이것은의 코드입니다 그것을 null로 리턴합니다. 나는 정지했다.

+0

'성별'이란 무엇입니까? 나는 그것이 정의되거나 값이 할당 된 곳을 보지 못합니다. –

+0

전체 코드에 대한 링크가 StackOverflow에서 눈살을 찌푸리게됩니다. 질문에 ** 관련 ** 코드를 모두 게시 할 준비를하십시오. – Qix

+0

죄송합니다. @Qix - 게시하기 전에 사이트 규칙을 찾으려고했지만 찾지 못했습니다. 감사합니다. 나는 다시하지 않을 것이다. –

답변

4

귀하의 생성자는 자신의 분야 String gender를 설정하지 않습니다. 당신은

public Student(String sid, String name, boolean isMale){  
    this.sid = sid; 
    this.name = name; 
    this.isMale = isMale; 
    this.gender = (isMale) ? "Male" : "Female"; 
    courses = "30202"; // default is empty 
} 

은 물론, 다음 출력은 그래서

Male: Female 

있을 수있다, 나는 당신이 얻을 것이다 당신이 정말로 그런

// System.out.println("Male: " + getGender()); 
System.out.println("Gender: " + getGender()); 

를 원 생각

Gender: Male 

또는

Gender: Female 
+0

아,이 말이 맞습니다. 나는 isMale에 너무 집중했다. 왜 그런지 모르겠다. 아마 처음으로 본 적이있다. 고맙습니다. –

+0

성원의 경우는 어떨까요? – LeatherFace

+0

@LeatherFace * He *는 남성으로 식별합니다. 또는 * she *는 여성으로 나타납니다. 나는 MTF trans에 대해서만 신경을 썼 겠지만 FTM trans에는 같은 문제가 있습니다. –

1

isMale 변수는 해당 사용자가 isMale인지 여부를 나타냅니다.

isMale == true 인 경우 "Male"을 반환하고 isMale == false 인 경우 "Female"를 반환하도록 getGender 메서드를 변경해야합니다.

/** 
    * Get the gender of the student, i.e. "Male" or "Female" 
    * 
    * @return The String "Male" if the student is male, 
    *   otherwise "Female". 
    */ 
    public String getGender() 
    { 
     if(isMale) { 
      gender = "Male"; 
     } 
     else{ 
      gender = "Female"; 
     } 
     return gender; 
    } 
+0

도달 할 수없는 return 문 때문에 컴파일되지 않습니다. –

+0

코드를 편집했습니다. –

+1

감사합니다. 덕분에 더 이해할 수있었습니다. 고마워요! –

0

클래스에 gender 필드를 설정하는 것이 없습니다.

일반적으로 isMale 변수와 gender 변수가 없어야합니다. 그것은 불필요한 것입니다. 당신은 다른 하나로부터 하나를 도출 할 수 있고, isMale은 단지 2 가지 상태를 가지고 있기 때문에 더 나은 구현입니다. (여기에 anti-trans를 시도하지 않습니다. 이것은 대부분의 학생 과제에서 기본 가정입니다.)

+0

그것은 그것이 나에게 어떻게 주어 졌는지입니다. –

관련 문제