题目要求:当输入的年龄小于0,则提示年龄不能小0,需要重新输入直到满足条件为止。
那么我们可以设置一个while循环,如果数据小于0,则需要不断输入:
while (a<0) { //如果输入的年龄小于0,进行循环重新输入,直到大于0。
System.out.println("输入的学生年龄不能小于0,请重新输入:")
a = sca.nextInt()
}
源程序:
源程序
程序运行结果,如果正确输入:
正确输入结果
如果中间有错误输入,例12岁输入了-12:
错误输入-12结果
输入-12后,如果再次不小心错误输入-12,则还需要接着输入直到大于0:
错误输入2次,则循环直到满足条件。
实现步骤:
1、获取当前时间
2、判断出生日期是否小于当前时间,如果大于,则引发一场
3、从当前时间中取出年、月、日;从出生日期中取出年、月、日,年份相减
4、然后做具体判断
示例代码如下:
public static int getAge(Date birthDay) throws Exception {//获取当前系统时间
Calendar cal = Calendar.getInstance()
//如果出生日期大于当前时间,则抛出异常
if (cal.before(birthDay)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!")
}
//取出系统当前时间的年、月、日部分
int yearNow = cal.get(Calendar.YEAR)
int monthNow = cal.get(Calendar.MONTH)
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH)
//将日期设置为出生日期
cal.setTime(birthDay)
//取出出生日期的年、月、日部分
int yearBirth = cal.get(Calendar.YEAR)
int monthBirth = cal.get(Calendar.MONTH)
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH)
//当前年份与出生年份相减,初步计算年龄
int age = yearNow - yearBirth
//当前月份与出生日期的月份相比,如果月份小于出生月份,则年龄上减1,表示不满多少周岁
if (monthNow <= monthBirth) {
//如果月份相等,在比较日期,如果当前日,小于出生日,也减1,表示不满多少周岁
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth) age--
}else{
age--
}
}
System.out.println("age:"+age)
return age
}
class Student {int age
String name
int number
Student(int a,String s,int n)
{
age=a
name=s
number=n
}
int getAge()
{
return age
}
int getNumber()
{
return number
}
String getName()
{
return name
}
void 修改年龄(int age1)
{
age=age1
}
int 获得年龄()
{
return age
}
}
public class StudentText {
public static void main(String args[])
{
Student student = new Student(20,"xx",35)
System.out.println("姓名: "+student.getName())
System.out.println("年龄: "+student.getAge())
System.out.println("学号: "+student.getNumber())
student.修改年龄(25)
System.out.println("修改年龄: "+student.获得年龄())
}
}
/*
*答案: 姓名: xx
年龄: 20
学号: 35
修改年龄: 25
*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)