我的问题非常简单,我想要做的是打印用户输入值时设置的开关案例名称。让我们假设
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”任何建议?
答案 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)