黑马程序员技术交流社区
标题:
字符串判断累加问题
[打印本页]
作者:
Tesla时光
时间:
2012-9-11 23:18
标题:
字符串判断累加问题
本帖最后由 翁发达 于 2012-9-12 12:08 编辑
要求输入一个身份证号,然后打印出生年月日,打印出来的格式是:xxxx年xx月xx日.并要得到年月日累加的和.
我的思路是:
先判断这个身份证长度是否正确,用String类的length方法
再将这个身份证的年月日截取出来,用substring();
然后再折分,用三个变量接收,然后加上"年""月""日"打印
接下来累加年月日就把我难住了,我得到的是不确定的字符串,
一加的结果乱其八糟,我都看不懂,请问正确的要怎么实现?
还有个问题,外一有不小心输入了字母怎么办?
那我们要验证这个身份证是否有非法字符?这个代码该怎么实现?
import java.util.Scanner;
class Test1
{
public static void main(String[] args)
{
Scanner can=new Scanner(System.in);
System.out.println("请输入身份证号");
String id=can.nextLine();
if(StringTools.checkLength(id)){
String birthday=StringTools.getBirthday(id);
StringTools.print(birthday);
}else{
System.out.println("身份证长度不正确");
}
}
}
//将得到的birthday 按照指定格式输出
class StringTools
{
public static void print(String birthday){
String year="";
String month="";
String day="";
year=birthday.substring(0,4);
month=birthday.substring(4,6);
day=birthday.substring(6);
System.out.println(year+"年"+month+"月"+day+"日");
}
//判断身份证号长度是否正确
public static boolean checkLength(String id){
return id.length()==18;
}
//得到身份证中的年月日
public static String getBirthday(String id){
return id.substring(6,14);
}
}
作者:
孙岳
时间:
2012-9-12 00:36
累加可以强转成int类型:
上面得到的String类型的year,通过int y = Integer.Int(year);得到int类型,然后就能相加了。
非法字符可以通过ASCII码来限制,0到9的ASCII码是48到57,如果超出这个范围就是非法字符。
我能想到的办法是用for循环来按字符输入,逐个判断ASCII码值,然后存储到char[]字符数组中,利用角标打印年月日。
再把char转成int型,求和。或者直接利用ASCII码差值求和。比如年份是abcd,那就是1000*(a-48)+100*(b-48)+10*(c-48)+(d-48)。
作者:
王金科
时间:
2012-9-12 01:23
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入18位的身份证号码:");
Scanner sc = new Scanner(System.in);
String id = sc.nextLine();
boolean b = checkID(id);
if(b){
getBirthday(id);
}else{
System.out.println("身份证号码有误");
}
}
//这里粗劣的判断一下身份证的合法性,还可以更加准确一点,对年月日也进行判断一下
public static boolean checkID(String id){
String reg = "\\d{17}[\\dxX]";
boolean b = id.matches(reg);
return b;
}
public static void getBirthday(String id){
String year,month,date;
year = id.substring(6, 10);
month = id.substring(10, 12);
date = id.substring(12, 14);
System.out.println("您的生日是:"+year+"年"+month+"月"+date+"日");
int y,m,d,sum;
y = Integer.parseInt(year);
m = Integer.parseInt(month);
d = Integer.parseInt(date);
sum = y+m+d;
System.out.println("您生日的年月日之和为:"+sum);
}
}
复制代码
作者:
Tesla时光
时间:
2012-9-12 12:08
王金科 发表于 2012-9-12 01:23
好的,问题解决,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2