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

Java查询联系人电话时如何实现无内容返回?

问题:根据姓名查询联系人电话时,如何实现无匹配时不输出任何内容?

现有查询方法代码

public String nameToPhone(String inputName) {
    /* (c) Allow the user to search a contact’s phone number using his/her name. */
    Pattern p;
    Matcher m;

    // Store name as pattern
    p = Pattern.compile(inputName);
    // Match pattern with array name
    m = p.matcher(this.name);
    if (m.matches())
        return this.phoneNum;
    else
        return null;
}

调用方式

通过System.out.print(phonebookArray[i].nameToPhone(inputName))调用该方法。

问题现象

  • 当else分支返回null时,匹配到姓名会同时显示电话号码和"null"
  • 当else分支返回空串""时,匹配到姓名会同时显示电话号码和空白行

需要实现的效果:仅在查询姓名存在时显示电话号码,无匹配时完全不输出任何内容


解决办法

核心是不要直接把方法返回值丢给System.out.print,而是先判断有效性再输出,或者直接调整方法逻辑:

方案1:修改调用逻辑(推荐,不改动原有方法)

先获取方法返回结果,判断结果不为null且非空时再执行输出:

String phoneResult = phonebookArray[i].nameToPhone(inputName);
if (phoneResult != null && !phoneResult.isEmpty()) {
    System.out.print(phoneResult);
}

方案2:调整方法本身的逻辑

把方法返回类型改成void,直接在方法内部处理输出,无匹配时什么都不做:

public void nameToPhone(String inputName) {
    Pattern p = Pattern.compile(inputName);
    Matcher m = p.matcher(this.name);
    if (m.matches()) {
        System.out.print(this.phoneNum);
    }
    // 无匹配时不执行任何输出操作
}

调用时直接执行phonebookArray[i].nameToPhone(inputName)即可。

额外提示:如果只是做姓名的完全匹配,用this.name.equals(inputName)比正则匹配更简洁高效,除非你需要支持模糊正则查询的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:12:12