为了账号安全,请及时绑定邮箱和手机立即绑定

这里发生了什么?

这里发生了什么?

MMMHUHU 2024-01-05 10:26:09
有效印度手机号码的规则:该号码应包含 10、11 或 12 位数字。如果包含 10 位数字,则第一位数字应为 7 或 8 或 9。如果包含 11 位数字,则第一位数字应为 0,然后遵循第二条规则。如果包含 12 位数字,则前两位数字应为 91,然后遵循第二条规则。对于测试用例:1881906355596此代码应该产生无效,但它显示有效。import java.util.*;import java.lang.*;import java.io.*;class GFG {    public static void main (String[] args)     {     Scanner scan = new Scanner(System.in);     int t=scan.nextInt();     while((t--)!=0){         String s = scan.next();         int length = s.length();         if((length==10) &&((s.charAt(0)=='7')||(s.charAt(0)=='9')||(s.charAt(0)=='8')))         System.out.println("Valid");         else if((length==11) &&(s.charAt(0)=='0')&&(s.charAt(0)=='7')||(s.charAt(0)=='9')||(s.charAt(0)=='8'))         System.out.println("Valid");//code         else if((length==12) &&(s.charAt(0)=='9')&&(s.charAt(1)=='1'))         System.out.println("Valid");//code         else System.out.println("Invalid");     }     }}
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

你的第二个和第三个条件都是错误的。


第二个条件错误地返回true您的881906355596输入。


如果您按如下方式安排,您就会明白原因:


else if (

    (length==11) &&           // false &&

    (s.charAt(0)=='0') &&     // false &&

    (s.charAt(0)=='7') ||     // false ||

    (s.charAt(0)=='9') ||     // false || 

    (s.charAt(0)=='8')        // true 

)                             // equals true

它应该是:


else if (length == 11 && s.charAt(0) == '0' && (s.charAt(1) == '7' || s.charAt(1) == '9' || s.charAt(1) == '8'))

第三个条件应该是:


else if (length == 12 && s.charAt(0) == '9' && s.charAt(1) == '1' && (s.charAt(2) == '7' || s.charAt(2) == '9' || s.charAt(2) == '8'))



查看完整回答
反对 回复 2024-01-05
?
狐的传说

TA贡献1804条经验 获得超3个赞

你错过了一个完整的()

else if((length==12) &&((s.charAt(0)=='9')&&(s.charAt(1)=='1')))


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 39 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信