有效印度手機號碼的規則:該號碼應包含 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'))
添加回答
舉報
0/150
提交
取消