import javaioBufferedReader;
import javaioIOException;
import javaioInputStreamReader;
import javatextSimpleDateFormat;
import javautilDate;
在Student类中加入获得年龄的方法,如下
public int getAge(){
boolean flag=true;//定义输入标记位,用于检验输入信息的正确与否
BufferedReader bfr = new BufferedReader(new InputStreamReader(Systemin));//定义输入类,准备接受键盘输入出生日日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定制日期显示模板,显示格式
String today = sdfformat(new Date())toString();//将当前系统日期按照模板转换为String类型
String birthday = null;//接收键盘输入的出生日期
Systemoutprintln("请输入出生日期,格式为\"XXXX-XX-XX\"");//提示输入格式
while(flag){//while循环读取,若正确则结束循环,若错误则重新输入读取
try {//try异常处理
birthday = bfrreadLine();//用出生日期字符串接收键盘输入出生日期
if(birthdaymatches("\\d{4}-\\d{2}-\\d{2}+$")){//对输入出生日期做正则验证,看是否正确
flag=false;//正确则修改循环标记位,退出循环
}
else{
Systemoutprintln("输入不正确,请按照指定格式输入!");//不正确则打印错误提示信息,等待重新输入
}
} catch (IOException e) {
eprintStackTrace();//打印异常
}
}
String oldTime =birthdaysubstring(0,4);//截取出生日期的前四个字符,也就是出生年份
String newTime =todaysubstring(0,4);//截取当前系统时间的前四个字符,也就是当前年份
int birthTime = IntegerparseInt(oldTime);//将字符提取成Integer类型,得到int型的出生年份
int todayTime = IntegerparseInt(newTime);//将字符串提取成Interger类型,得到int型的当前年份
return (todayTime-birthTime);//当前年份减去出生年份即为实际年龄,若果想得到虚岁,则在此age上+1即可,
}
亲测完全可以到达要求。方便你理解,所有代码均已加注释。希望对你有所帮助,当然上述是在生日为键盘输入的时候使用。
若果你同构造方法手工设定出生日期,则更简单一些,如下:
import javatextSimpleDateFormat;
import javautilDate;
public class Student
{
private String studentID;
private String studentName;
private String studentBirthday;
private String studentSpecialty;
/public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
thisstudentID = studentID;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
thisstudentName = studentName;
}
public String getStudentBirthday() {
return studentBirthday;
}
public void setStudentBirthday(String studentBirthday) {
thisstudentBirthday = studentBirthday;
}
public String getStudentSpecialty() {
return studentSpecialty;
}
public void setStudentSpecialty(String studentSpecialty) {
thisstudentSpecialty = studentSpecialty;
}/
private String studentClass;
private int age;
Student()
{
}
Student(String si,String sn,String sb,String ss)
{
thisstudentID=si;
thisstudentName=sn;
thisstudentBirthday=sb;
thisstudentSpecialty=ss;
}
void setStudentClass(String newclass)
{
studentClass=newclass;
}
String getStudentClass()
{
return studentClass;
}
public int getAge(){
String oldTime=null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定制日期显示模板,显示格式
String today = sdfformat(new Date())toString();//将当前系统日期按照模板转换为String类型
if(thisstudentBirthday!=null){
oldTime=thisstudentBirthdaysubstring(0,4);//截取出生日期的前四个字符,也就是出生年份
}else{
oldTime=todaysubstring(0,4);
}
String newTime =todaysubstring(0,4);//截取当前系统时间的前四个字符,也就是当前年份
int birthTime = IntegerparseInt(oldTime);//将字符提取成Integer类型,得到int型的出生年份
int todayTime = IntegerparseInt(newTime);//将字符串提取成Interger类型,得到int型的当前年份
return thisage=todayTime-birthTime;//当前年份减去出生年份即为实际年龄,若果想得到虚岁,则在此age上+1即可,
}
public String toString()
{
return "该生信息是:"+"学号:"+studentID+"|"+"姓名:"+studentName+"|"
+"出生日期:"+studentBirthday+"|"+"专业:"+studentSpecialty+"|"+"年龄:"+thisgetAge();
}
public static void main (String args[])
{
Student s1=new Student();
Systemoutprintln(s1);
Student s2=new Student("111111111","AAAA","199168","计算机科学与技术");
s2setStudentClass("计算机101");
Systemoutprintln(s2);
}
}
程序运行结果:
该生信息是:学号:null|姓名:null|出生日期:null|专业:null|年龄:0
该生信息是:学号:111111111|姓名:AAAA|出生日期:199168|专业:计算机科学与技术|年龄:21
顺便说一声,你这个类设计的很不符规范,所有的属性应当首单词首字母小写,其后首字母大写,只要是属性则必然要用private封装,通过setter和getter设置于取得,还有很多地方就不一一说明了,你只需将第二段代码复制就可以运行了,已经顺利测试
在年龄单元格中输入=YEAR(TODAY())-MID(A2,7,4)。A2这个代表你表格中身份z号码的位置,公式输入正确之后回车ENTER键确认即可。
生日(birthday),既指一个人出生的日子,也指一个人的出生日纪念日。传统中国人以农历计算生日,小孩子一周岁的生日称为“周岁”,有各种习俗。
老年人的生日称为寿日,在50岁以上逢十可称为大寿。在中国的传统中,生日吃长寿面和鸡蛋。现代西风渐进,不少人以阳历计算生日,庆祝方式也改为蛋糕和蜡烛。
西方人的生日日期相对来说比较简单。日期就是出生的那一天的公元纪年法的公历日期。这样如果恰好是2月29日生日的话,每逢闰年才会有生日。
在西方的占星术和12星座理论里面,都是用阳历来推断“性格”,未来的“运气”,“婚姻”,“情绪变化”等。西方人过生日习惯使用,并且分成12星座。虽然他们都带有迷信的色彩,但是却有十分悠久的历史。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)