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

如何在字符串方法中使用AND逻辑?Java邮箱校验代码修复求助

修复邮箱校验的Java代码问题

你的原代码因逻辑表达式错误,无法正确校验邮箱后缀,以下是具体修复方案:

原代码的问题分析

原while循环的条件:

!email.contains("@") && !email.endsWith(".com") || !email.contains("@") && !email.endsWith(".ca")

这个逻辑等价于!email.contains("@") && (!email.endsWith(".com") || !email.endsWith(".ca")),仅会校验邮箱是否包含@——只要邮箱含@,不管后缀是不是.com或.ca都会直接通过,完全没起到后缀检查的作用。

修复后的代码

根据你的需求(邮箱必须包含@,且以.com或.ca结尾),正确逻辑是:如果邮箱不包含@,或者既不以.com也不以.ca结尾,就判定无效。

方案1:直接判断后提示退出(匹配你原代码的return逻辑)

System.out.println("Enter your email:");
email = input.next();
// 校验邮箱是否无效
if (!(email.contains("@") && (email.endsWith(".com") || email.endsWith(".ca")))) {
    System.out.println("Your email is not valid");
    return;
}

方案2:循环提示用户重新输入(更友好的交互)

如果希望用户输入错误后可重新输入,而非直接退出,可修改为:

System.out.println("Enter your email:");
email = input.next();
// 邮箱无效时循环提示重新输入
while (!(email.contains("@") && (email.endsWith(".com") || email.endsWith(".ca")))) {
    System.out.println("Your email is not valid");
    System.out.println("Enter your email again:");
    email = input.next();
}

逻辑说明

!(email.contains("@") && (email.endsWith(".com") || email.endsWith(".ca"))) 是对有效邮箱条件的直接否定:

  • 有效邮箱条件:包含@ 并且 (以.com结尾 或者 以.ca结尾)
  • 无效邮箱条件:对上述条件取反,即不包含@ 或者 (既不以.com结尾 也不以.ca结尾)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:20