2017-03-29 19 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をスローする唯一の方法は、 '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

と私はどのように私はこのオブジェクトの私のコンストラクタに入れますか? publicヒューマン(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

Oracleには、スイッチでの文字列の使用に関する記事もあります。 http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html –

1

あなたはtypeOfGenderを初期化していません。それはnullです。それが理由です。お試しください

typeOfGender="Male"; 

あなたのコードは意味をなさないです。 typeOfGenderが "Male"の場合、 "Male"を割り当てますか?

+0

私は彼らが例のためだけにそうしていると思っています。 –

0

は、文字列がnullであるために発生します。

しかし、今後の参考のために、ここでは文字列で、スイッチケースなどの例です:

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; 
    }