现在,如果给你一个手机号码,你能找出对应的短号吗?

题目描述
大家都知道,手机号是一个 11 位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是 6+手机号的后 5 位,比如号码为 13512345678 的手机,对应的短号就是 645678。现在,如果给你一个手机号码,你能找出对应的短号吗? 注意,这个手机号码可能并不是 11 位的,这个时候你需要输出 "Halation - I can't join it!"

输入
输入数据的第一行是一个N(N <= 200),表示有N个数据,接下来的N行每一行为一个多位的手机号码,但是长度不会超过 50。

输出
输出应包括 N 行,每行包括一个对应的短号或者提示信息,输出应与输入的顺序一致。

样例输入
3
13512345678
13787654321
1234567890

样例输出
645678
654321
Halation - I can't join it!

n = int(input())
for i in range(n):
    s = input()
    if len(s) != 11:
        print("Halation - I can't join it!")
    else:
        print(s[5:11])

问题解决的话,请点下采纳

先验证是不是手机号码段和是不是11位数
如果是直接用6+手机号5位输出
如果不是直接输出Halation - I can't join it!
需要代码吗?
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入N的值");
int index = Integer.valueOf(scanner.nextLine());
String [] arr = new String [index];
for(int i=0;i<index;i++){
System.out.println("请输入手机号");
String line = scanner.nextLine();
arr[i]=line;
}
System.out.println("接下来输出的是短号信息");
for(int i=0;i<arr.length;i++){
boolean b = isPhone(arr[i]);
if(b){
System.out.println(6+arr[i].substring(6));
}else{
System.out.println("Halation - I can't join it!");
}
}
}
public static boolean isPhone(String phone){
String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\d{8}$";
if (phone.length() != 11) {
return false;
} else {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(phone);
boolean isMatch = m.matches();
if (!isMatch) {
return false;
} else {
return true;
}
}
}