4

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

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

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

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

4

3 回答 3

12

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

于 2013-06-08T03:47:46.547 回答
5

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

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

或者你可以说

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

请注意,如果调用.equals()可能是的对象,null否则您将获得NullPointerException. 在这种情况下,类似...

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

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

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

于 2013-06-08T04:00:24.267 回答
3

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

于 2013-06-08T03:47:04.993 回答