不知道大家有没有好奇过身份证上数字的排列,今天我们来了解一下身份证中的秘密。
并且判断一下随便输入一串数字的身份证号是否合法
package Test
import scala.util.Random
//字符串
//知识点
//1.toInt把字符串转成整数
object day15 {
def main(args: Array[String]): Unit = {
val score = 90
val id = "42022220080903332X".toUpperCase//toUpperCase变大写
//1.生日是?
val birthday = id.substring(10, 14) //不包括终点下标
println(s"生日是:${birthday}")
val year = id.substring(6, 10) //6,7,8,9这个下标
println(s"年份是:${year}")
//性别:倒数第二位,如果是奇数就是boy,偶数girl
val gender = id.substring(16, 17)
println(s"性别${gender}")
if (gender.toInt % 2 == 0) {
println("她是女生")
} else {
println("她是男生")
}
//前两位是省份
val province = id.substring(0, 2).toInt
val m1 = Map((41, "河南"), (42, "湖北"), (43, "湖南"), (44, "广东"))
println(s"籍贯是${m1.get(province)}")
//身份证倒数3,4位表示省市乡镇信息
val ppp = id.substring(14, 16)
println(ppp)
//求验证身份证号是不是合法的
val weights = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
val checkCode = "10X98765432"
var sum = 0
for (i <- 0 to 16) {
sum += id(i).toInt * weights(i)
}
println(sum%11)
if (id.charAt(17) == checkCode.charAt(sum % 11)) {
println(s"身份证号码${id}合法")
} else {
println(s"身份证号码${id}不合法")
}
}
}