与Java .equals()方法相反?

时间:2013-06-08 03:44:21

标签: java conditional-statements

我正在尝试使用do-while循环在Java中编写一小段代码,询问用户的名字。如果它不是代码所寻找的名称,那么它只是重复自己。例如,

Scanner scan = new Scanner();
do { 
   System.out.println("whats your name?"); 
   String name = scan.nextLine(); 
} while ("jack".equals(name));  ////// <<<<

这是我用<<<<标记的,我不知道该怎么做。我需要类似!=的内容,但这不适用于字符串。

那么我可以把它放在这里?

3 个答案:

答案 0 :(得分:8)

感叹号!代表否定或赞美。 while(!"jack".equals(name)){ }

答案 1 :(得分:5)

布尔不!运营商是最干净的方式。当然你也可以说

if ("jack".equals(name) == false) { ... }

或者你可以说

if ("jack".equals(name) != true) { ... }

请注意在对象.equals()上调用null或者您将获得NullPointerException。在那种情况下,像......

if !((myVar == yourVar) || ((yourVar != null) && yourVar.equals(myVar))) { ... } 

...会防范NullPointerException并且如果它们不相等则为真,包括它们都不是null。相当大脑扭转了吗?如果丑陋,我认为逻辑是合理的。这就是我在许多项目中编写包含此逻辑的StringUtil类的原因!

这就是为什么在字符串文字而不是你正在测试的字符串上调用.equals()方法更好的约定。

答案 2 :(得分:3)

放“!”来自杰克。如果我正确理解了这个问题,这将解决。