【问题标题】:Opposite of Java .equals() method?与 Java .equals() 方法相反?
【发布时间】:2013-06-04 10:50:34
【问题描述】:

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

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

这是我用&lt;&lt;&lt;&lt; 标记的地方,我不知道该怎么办。我需要!= 之类的东西,但这不适用于字符串。

那么我可以在这里放什么?

【问题讨论】:

  • 您可以使用负布尔运算符:while (!jack.equals(name))
  • !my_string.equals(other_string)
  • @Vulcan:这就是答案。
  • @HovercraftFullOfEels 我不相信像这样简单的答案值得代表,而且我有一个(坏的?)在评论而不是社区 wiki 答案中发布的习惯。
  • 我猜你是对的。我一直怀疑5分钟内得到4个答案的问题只意味着原发帖人没有看过教程。

标签: java conditional-statements


【解决方案1】:

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

【讨论】:

  • 我的错误。为准确性而编辑。
  • @acdcjunior jack 似乎是原始问题中的一个变量,问题的格式很差。
  • @Vulcan 实际上,我说的是原始版本。当时是"jack(因此似乎)。现在显然是String
【解决方案2】:

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

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

或者你可以说

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

如果在可能是null 的对象上调用.equals() 时要小心,否则您将得到NullPointerException。在那种情况下,类似...

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

... 会防范NullPointerException,如果它们不相等,则为真,包括它们都不是null。相当脑筋急转弯吧?我认为这个逻辑是合理的,如果丑陋的话。这就是为什么我在许多项目中编写了一个包含此逻辑的StringUtil 类!

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

【讨论】:

  • +1 几乎太多的信息,但正确!提示:使用 CTRL+K 格式化您的代码,使其更易于阅读。
【解决方案3】:

把“!”来自千斤顶。如果我正确理解了这个问题,那将解决。

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2010-09-06
    • 2020-02-12
    • 2019-08-22
    • 2013-11-23
    • 2010-09-16
    相关资源
    最近更新 更多