【发布时间】:2019-10-29 07:31:32
【问题描述】:
有效印度手机号码规则:
号码应包含 10 位或 11 位或 12 位数字。
如果它包含 10 个数字,那么第一个数字应该是 7 或 8 或 9。
如果它包含11位数字,那么第一个数字应该是0,然后遵循第二个规则。
如果包含 12 位,那么前两位应该是 91,然后遵循第二条规则。
对于测试用例:
1
881906355596
此代码应生成无效,但显示有效。
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");
}
}
}
【问题讨论】:
-
使用
regex验证手机号码。 -
是的,我可以使用它,但我想知道这里发生了什么。 @MushifAliNawaz
-
你为什么要循环播放?
-
(s.charAt(0)=='0')&&(s.charAt(0)=='7')这个条件可以评估为true吗? -
"如果它包含 11 个数字,那么第一个数字应该是 0,然后遵循第二个规则。" - 这不是说first 字符应该是0,而second 应该是7、8 或9?这意味着
(s.charAt(0)=='0')&&(s.charAt(0)=='7')||...应该是(s.charAt(0)=='0')&&((s.charAt(1)=='7' )||...)(检查索引 1 处的字符是否为 7、8 或 9 - 请注意我在“或”序列中添加了括号)
标签: java string logical-operators