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

为什么输入任意值这段Java代码都总是打印"Unknown City"?

问题原因

你遇到的是Java字符串比较的典型错误,核心原因如下:

  • Java中==运算符对于引用类型(比如String)比较的是对象的内存地址,而非对象存储的内容
  • 你通过sc.nextLine()/sc.next()获取的city是运行时生成的新字符串对象,和代码中硬编码的"Meerut"、"Noida"这类字符串常量不在同一个内存地址,所以就算内容完全一致,==判断也会返回false,始终进入else分支。
修复方案

把所有字符串相等判断的==替换为equals()方法,该方法才是用来比较字符串内容的。如果需要兼容大小写输入的情况,可以使用equalsIgnoreCase()方法。
额外优化建议:把字符串常量放在equals前面,可以避免city为null时触发空指针异常。

修复后的完整代码
import java.util.Scanner;
public class JTP_If_Else_If_Ladder{
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        System.out.print("Enter City Name\t:\t");
        String city=sc.nextLine();
        System.out.println("You Entered\t:\t"+city);
        if("Meerut".equals(city)){
            System.out.println("City is Meerut.");
        }
        else if("Noida".equals(city)){
            System.out.println("City is Noida.");
        }
        else if("Agra".equals(city)){
            System.out.println("City is Agra.");
        }
        else{
            System.out.println("Unknown City");
        }
        sc.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:18:02