学校学生学号格式定义如下: 2位年级号+2位学院号+2位班级号+2位序号,如19041103, 编写程序处理用全院学生学号连接起来的长字符串,学院编号为20,包括17、18、19、20四个年级,请从字符串中提取特定两个班级202017班、202061班同学的学号后四位输出,输出编号之间用空格分隔,不换行。 注意:需要排除非法输入。
作者 蔡轲
单位 南昌航空大学
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
输入格式:
全院学生学号组成的长字符串(学号之间无分隔) 学号格式定义如下: 2位年级号+2位学院号+2位班级号+2位序号,如19041103,
输出格式:
特定两个班级202017班、202061班同学的学号后四位 如:1701 6103 1704
输入样例1:
在这里给出一组输入。例如:
2020610120201702202051132020110320201706
输出样例1:
在这里给出相应的输出。例如:
6101 1702 1706
输入样例2(第一个学号多输入一位):
在这里给出一组输入。例如:
20206100120201702202051132020110320201706
输出样例2:
在这里给出相应的输出。例如:
Wrong Format
输入样例3(第一个学号少输入一位数字):
在这里给出一组输入。例如:
202061120201702202051132020110320201706
输出样例3:
在这里给出相应的输出。例如:
Wrong Format
输入样例3(学号之间有空格):
在这里给出一组输入。例如:
2020610120201702 202051132020110320201706
输出样例3:
在这里给出相应的输出。例如:
Wrong Format
我滴答案:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.nextLine();
//正则表达式判断输入合法性
if(!a.matches("^[0-9]*$")) {
System.out.print("Wrong Format");
return;
}
if(a.length()%8!=0) {
System.out.print("Wrong Format");
return;
}
int start,out = 0;
for(start = 0;start<a.length();start+=8) {
if(a.substring(start,start+6).equals("202017")||
a.substring(start,start+6).equals("202061")) {
if(out == 1){
System.out.print(" ");
}
System.out.print(a.substring(start+4,start+8));
out = 1;
}
}
}
}
我滴总结:
这道题还是很简单滴~
首先判断是否只输入了数字,
然后判断是否输入个数正确。这个嘛,每个学号是8位,如果输入长度不是8的倍数,那么必有输错了滴对吧?
然后使用substring函数截取字符串,
注意嗷:
字符串的比较不能是“==”嗷,一定要用他的函数,a.equals()来比较嗷!
然后要注意一定是八个八个找,因为可能有子字符串符合寻找要求的可能,导致输出错误答案,一定看题嗷,是8个一个学号。
找到了输出就行
超级简单滴~