与Java.equals()方法相反?

与Java.equals()方法相反?,java,conditional-statements,Java,Conditional Statements,我试图用Java编写一小段代码,其中包含一个do while循环,该循环询问用户的姓名。如果它不是代码要查找的名称,那么它只会重复自身。比如说, Scanner scan = new Scanner(); do { System.out.println("whats your name?"); String name = scan.nextLine(); } while ("jack".equals(name)); ////// <<<< Scann

我试图用Java编写一小段代码,其中包含一个do while循环,该循环询问用户的姓名。如果它不是代码要查找的名称,那么它只会重复自身。比如说,

Scanner scan = new Scanner();
do { 
   System.out.println("whats your name?"); 
   String name = scan.nextLine(); 
} while ("jack".equals(name));  ////// <<<<
Scanner scan=新扫描仪();
做{
你叫什么名字;
字符串名称=scan.nextLine();

}而(“jack.equals(name));// 在jack的前面加上“!”。如果我正确理解了问题,那就解决了。

感叹号
表示否定或赞美<代码>而(!“jack”.equals(name)){}
布尔值不是!操作员是最干净的方法。当然你也可以说

if ("jack".equals(name) == false) { ... }
或者你可以说

if ("jack".equals(name) != true) { ... }
如果在对象上调用
.equals()
时可能是
null
,否则会得到
NullPointerException
,请小心。在这种情况下,类似于

if !((myVar == yourVar) || ((yourVar != null) && yourVar.equals(myVar))) { ... } 
。。。将防止出现
NullPointerException
,如果它们不相等,则为true,包括它们都不是
null
。真是个脑筋急转弯啊?我认为这种逻辑是合理的,即使是丑陋的。这就是为什么我在许多项目中编写了一个
StringUtil
类,其中包含这种逻辑


这就是为什么在字符串文本上调用
.equals()
方法比在测试的字符串上调用方法更好的原因

您可以使用负布尔运算符:
而(!jack.equals(name))
!我的字符串.equals(其他字符串)
@Vulcan:这是一个答案。@HovercraftFullOfEels我不相信像那样简单的答案值得一提,而且我有一个(坏的?)习惯,就是在评论中发帖,而不是在社区维基上发帖。我想你是对的。我总是怀疑在5分钟内得到4个答案的问题只意味着原始海报没有阅读教程。我的错误。为准确起见进行了编辑。@acdcjunior
jack
似乎是原始问题中的一个变量,格式很差。@Vulcan我实际上是在说原始问题。当时它是
“jack
(看起来就是这样)。现在它显然是一个
字符串
+1,信息太多了,但正确!提示:使用CTRL+K设置代码格式,使其更易于阅读。