Java 如何在交换机中使用字符串?

Java 如何在交换机中使用字符串?,java,string,nullpointerexception,switch-statement,Java,String,Nullpointerexception,Switch Statement,当我尝试这样做时,IDE抛出一个NullPointerException。我只想选择两种性别 public String typeOfGender { switch (typeOfGender) { case "Male": typeOfGender = "Male"; break; case "Female":

当我尝试这样做时,IDE抛出一个
NullPointerException
。我只想选择两种性别

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

您尚未初始化Gender的类型。它是空的。这就是为什么。试一试

typeOfGender="Male";

顺便说一下,您的代码没有意义。如果gender的typeOfGender等于“Male”,则为其指定“Male”。
NullPointerExeption
是由于字符串为
null
而导致的

但是,为了便于将来参考,这里有一个带字符串的as开关大小写示例:

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

我经常使用它们,没有任何问题,例如下面的例子。你会抛出它的唯一原因是如果你将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";
}

如果
typeOfGender
null
,则抛出NPE的唯一方法是初始化typeOfGender=“”,使用
枚举<代码>字符串
值不是类型安全的,很容易拼写错误。我认为它们只会在示例中这样做。我如何将其放入此对象的构造函数中?public Human(int-age,int-weight,int-height,String-name,String-typeOfGender){super();this.age=age;this.weight=weight;this.height=height;this.name=name;this.typeOfGender=typeOfGender;}因为它显示“无法解析符号”这个网站有一个很好的建设者的例子。你可以简单地把它加进去。(你粘贴的代码没有格式化,我现在无法格式化)。Oracle也有一篇关于在交换机中使用字符串的文章。关于构造函数的单独问题。请出示你的密码。在您的示例中包含足够的内容,以便我们重现您所看到的内容。