【问题标题】:How do I exit the loop when I use .equalsIgnoreCase使用 .equalsIgnoreCase 时如何退出循环
【发布时间】:2015-01-08 20:40:27
【问题描述】:

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

一旦用户输入了“STOP”这个词,程序就会终止。但是我对 .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"));

我没有使用!,因为我脑海中的逻辑是字符串名称将简单地与“STOP”进行比较,例如当 String name = STOP 时终止程序但是在运行该代码时我发现程序仅在 1 个循环后终止,所以无论用户在程序中键入什么内容都在循环一次后终止,但是当我设置逻辑继续循环时而名称不等于 STOP。程序开始正常运行,为什么会这样?为什么它在最初的尝试中不起作用?

谢谢

【问题讨论】:

  • 您在运行第一个版本的代码时是否尝试输入stop?结果如何?
  • 你知道while 是什么意思吗? (你可能把它误认为until,在java中不存在)
  • 检查特定条件的语句,例如当文件有下一行时继续循环
  • do 这个代码while 我的name不是 "STOP"不是!如果你拿出!,然后看你得到什么。
  • 是的,我想这就是我的困惑所在

标签: java do-while control-flow


【解决方案1】:

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

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

因此,如果您的姓名等于“STOP”,则该语句返回 true(循环继续运行),但由于您否定该语句的结果,只要您的姓名不等于“STOP”,它就会继续运行。

只要语句为真 -> 只要名称等于“STOP”,您的第一次尝试就会运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多