【问题标题】:How to use String in switch?如何在开关中使用字符串?
【发布时间】:2017-03-29 20:13:39
【问题描述】:

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

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

【问题讨论】:

  • 抛出 NPE 的唯一方法是 typeOfGendernull
  • 初始化 typeOfGender=""
  • 使用enumString 值不是类型安全的,很容易拼错。

标签: java string nullpointerexception switch-statement


【解决方案1】:

你还没有初始化 typeOfGender。它是空的。因此。试试

typeOfGender="Male";

顺便说一句,您的代码没有意义。如果 typeOfGender 等于“Male”,你给它赋值“Male”??

【讨论】:

  • 我认为他们这样做只是为了举例。
【解决方案2】:

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

【讨论】:

  • 我如何把它放在这个对象的构造函数中? public Human(int age, int weight, int height, String name, String typeOfGender) { super(); this.age = 年龄; this.weight = 重量; this.height = 高度; this.name = 名称; this.typeOfGender = typeOfGender; } 因为它显示“无法解析符号”
  • 这个网站java2novice.com/java_constructor_examples/… 有一个很好的构造函数示例。您可以简单地将其添加到其中。 (您粘贴的代码未格式化,我现在无权对其进行格式化)。
  • Oracle 也有一篇关于在开关中使用字符串的文章。 docs.oracle.com/javase/7/docs/technotes/guides/language/…
  • 关于构造函数的单独问题。请出示您的代码。在您的示例中包含足够的内容,以便我们重新创建您所看到的内容。
【解决方案3】:

NullPointerExeption 是因为你的字符串是null 造成的。

但是,为了将来参考,这里是一个带有字符串的 switch-case 示例:

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

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多