这里发生了什么?
Whаt is happening here?
有效印度手机号码的规则:
该号码应包含 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");
}
}
}
你错过了一整个()
else if((length==12) &&((s.charAt(0)=='9')&&(s.charAt(1)=='1')))
你的第二个和第三个条件是错误的。
第二个条件不正确 returns 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'))
有效印度手机号码的规则:
该号码应包含 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");
}
}
}
你错过了一整个()
else if((length==12) &&((s.charAt(0)=='9')&&(s.charAt(1)=='1')))
你的第二个和第三个条件是错误的。
第二个条件不正确 returns 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'))