打印开关盒

时间:2018-03-30 16:01:16

标签: java switch-statement case

我的问题非常简单,我想要做的是打印用户输入值时设置的开关案例名称。让我们假设

   switch (name.toLowerCase()) {
            case "john":
                salary = 12;
                break loop;

            case "jack":
            case "jonathen":
                salary = 6;
                break loop;

            default:
                System.out.println("\n\tWrong Name Dude!");
                break;

        }
        System.out.print(name)

我想要做的是当用户输入john,或JOHN或JoHn时我只想打印'john'。这是什么名字。问题是如果我使用指定的字符串打印它,to.lowercase将在输入“JoHn”时识别它是“john”,但是在打印时它会打印“JoHn”而不是“john”任何建议?

3 个答案:

答案 0 :(得分:3)

像这样更改你的代码:

name = name.toLowerCase();
switch (name) {
        case "john":
            salary = 12;

            break loop;
        case "jack":
        case "jonathen":
            salary = 6;
            break loop;
            default:
            System.out.println("\n\tWrong Name Dude!");
            break;

    }
    System.out.print(name)

原因是name.toLowerCase()只返回名称变量的小写,但它不会更改名称本身,因此您必须将返回值分配给名称。

答案 1 :(得分:1)

尝试简单地打印name.toLowerCase()

答案 2 :(得分:0)

Java中的String类是不可变的,这意味着一旦创建了一个String对象,你在它上面执行的任何操作都不会改变对象的值,而是会返回一个新的字符串,它是您调用的方法的结果(在这种情况下为toLowerCase)。

为了达到你想要的效果,你只需要将全新字符串的引用存储到另一个变量中。 你可以尝试这样的事情:

switch (name = name.toLowerCase()) {
        case "john":
            salary = 12;

            break loop;
        case "jack":
        case "jonathen":
            salary = 6;
            break loop;
            default:
            System.out.println("\n\tWrong Name Dude!");
            break;

    }
    System.out.print(name)