当我使用.equalsIgnoreCase时如何退出循环

时间:2015-01-08 20:40:28

标签: java do-while control-flow

我设计了一个程序,要求用户输入任何内容。

一旦用户输入“停止”字样,程序就应该终止。但是我对.equalsIgnoreCase方法有点困惑。

这是正常运行的代码:

import java.util.Scanner;
public class Stop {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String name;
    do {
        System.out.println("Enter a name: ");
        name = scan.next();
        System.out.println(name);

        //Keep looping until the name does not equal stop, once it equals stop
        //then stop the program 
    } while(!name.equalsIgnoreCase("STOP"));
    System.out.println("Program Terminated!");
    scan.close();
}
 }

但在我最初的尝试中,我在while(),

中尝试了以下代码
while(name.equalsIgnoreCase("STOP"));

我没有使用!,因为我头脑中的逻辑是字符串名称将简单地与“停止”相对应。例如当String name = STOP时终止程序但是在运行该代码时我发现程序只在1个循环之后终止,所以无论用户在循环一次后终止的程序中输入的是什么,但是当我设置逻辑以保持循环时而名字不等于STOP。该计划开始正常运作,为什么会这样?为什么它不能用于初始尝试?

谢谢

1 个答案:

答案 0 :(得分:1)

当语句为true时,循环继续运行。在你的情况下,这意味着:

while(!name.equalsIgnoreCase("STOP"))

因此,如果你的名字等于“STOP”,那么语句返回true(循环继续运行),但是由于你否定语句的结果,只要你的名字不等于“STOP”,它就会一直运行。

您的第一次尝试将在声明为真的情况下运行 - >只要名称等于“STOP”。