需求:
输入一个日期,然后输出是今年的第几天。
思路:输出一个字符串,规定输入方式。然后截取字符串的年,月,日。最后将年月日转化成整型。还有关于闰年的判断。
字符串转为整型:
Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象),这样转完的对象就具有方法和属性了。 而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性 。
以及用到函数indexOf(),根据字符‘/’来截取分好年月日。
substring(a,b)用此函数来截取函数,包括a,不包括b
public static void main(String[] args) {
// TODO Auto-generated method stub
//输入日期:
System.out.println("输入日期,显示为这一年的第几天:输入格式:年/月/日");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();//输入字符串
getDay(str);
}
private static void getDay(String str) {
// TODO Auto-generated method stub
int sum=0;//记录总数
int a = str.indexOf('/');//获取年,
int b = str.indexOf('/', a+1);//获取月份,从a+1开始
//提取年份
int year = Integer.parseInt(str.substring(0, a));//将字符串转换为整型,截取字符串
//提取月份
int month = Integer.parseInt(str.substring(a+1, b));
//提取天
int day = Integer.parseInt(str.substring(b+1, str.length()));
int er;//二月的天数
//判断:
if(year/400==0) {
er=29;
}
else
{
er=28;
}
month--;
if(month==0)
sum+=31;
while(month>0) {
if(month==1||month==3||month==5||month==7||month==8||month==10) {
sum+=31;
}
if(month==4||month==6||month==9||month==11) {
sum+=30;
}
if(month==2) {
sum+=er;
}
month--;
}
System.out.println("今年的第"+(sum+day)+"天");
}
还有另外的方法:创建一个数组
int[] month = {31,28,31,30,31,30,31,31,30,31,30,31}//每个月份的天数
当二月为闰年的时候,将month[1]=29;
最后直接利用数组来加天数就好了,此方法更为简单和易于理解。