这里发生了什么?

有效印度手机号码的规则:


该号码应包含 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");

     }

     }

}


MMMHUHU
浏览 102回答 2
2回答

慕妹3242003

你的第二个和第三个条件都是错误的。第二个条件错误地返回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'))

狐的传说

你错过了一个完整的()else if((length==12) &&((s.charAt(0)=='9')&&(s.charAt(1)=='1')))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java