You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手求助:如何让while循环运行至输入"quit"时终止?

Java中持续接收输入直到输入"quit"终止的问题解决

你的两段代码都犯了同一个Java新手常见的错误:用==比较字符串内容。在Python中,==可以直接比较字符串的内容,但Java里==比较的是两个字符串对象的内存引用地址,而不是实际内容。即使两个字符串内容完全相同,只要它们是不同的对象,==就会返回false,这导致你的循环无法正常终止。

第一段代码修正

原代码的循环条件s1 != "quit"永远为true,因为输入的字符串和字面量"quit"是不同的对象。需要把比较方式换成equals()方法,它专门用来比较字符串的内容:

import java.util.Scanner;
class HelloWorld {
    static String s1;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        do {
            s1 = in.next();
        } while (!s1.equals("quit"));

        System.out.println(s1);
    }
}

如果想忽略大小写(比如输入"Quit"或"QUIT"也能终止),可以用equalsIgnoreCase():

while (!s1.equalsIgnoreCase("quit"));

第二段代码修正

同样的,原代码中的if (s1=="quit")和while (s1!="quit")都用了错误的比较方式,导致输入"quit"时无法触发break,还会继续执行后续的输入语句引发错误。修正这两处的比较逻辑:

import java.util.Scanner;
class HelloWorld {
    static String s1;
    static String s2;
    static int s3;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        do {
            s1 = in.next();
            if (s1.equals("quit")){
                break;
            }
            s2 = in.next();
            s3 = in.nextInt();
        
        } while (!s1.equals("quit"));
        System.out.println("Terminate");
        
    }
}

额外建议

为了避免NullPointerException(虽然在你的do-while逻辑中s1不会为null,但养成好习惯很重要),可以把字符串字面量放在前面进行比较:

  • 把!s1.equals("quit")换成!"quit".equals(s1)
  • 把s1.equals("quit")换成"quit".equals(s1)

这样即使s1是null,也不会抛出异常,因为字面量"quit"永远不会为null。

内容的提问来源于stack exchange,提问作者Sophia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:45:30