首先是基础-程序员日
题目描述:
nowcoder是一个程序员,他决定把每年的第256天作为程序员的节日,所以他一直期待着这一天的到来。请实现一款软件,给定一个日期,输出这个日期是该年的第几天
输入描述:
输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出描述:
对于每组输入数据,输出一行,表示该日期是该年的第几天。
示例输入:
2000-01-01
示例输出:
1
首先给出代码。该题主要的思路为1.判断闰年2.获取字符串中的数字3.用数组存储日,并累加。
// write your code here
//闰年判断与月份判断
//
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
int[]ddd={31,28,31,30,31,30,31,31,30,31,30,31};
int[]number=new int[3];
String s =input.nextLine();
int flag=0;
number=change(s);
int year=number[0];
int month = number[1];
int day=number[2];
int ri=0;
if((year%4==0&&year%100!=0)||year%400==0)
{
// flag=1;
ddd[1]=29;
}
for(int i=0;i<month-1;i++)
{
ri+=ddd[i];
}
ri+=day;
System.out.println(ri);
}
}
//int是不对的因为要返回数组,会出现如下错误
//Main.java:14: error: incompatible types: int cannot be converted to int[]
//number=change(s);
//^
//Main.java:46: error: incompatible types: int[] cannot be converted to int
//return number;
public static int[] change(String s){
//获取字符串s的0,3
String year=s.substring(0,4);
String month=s.substring(5,7);
String day=s.substring(8);
int yy=Integer.parseInt(year);
int mm=Integer.parseInt(month);
int dd=Integer.parseInt(day);
int[]number = new int[3];
number[0]=yy;
number[1]=mm;
number[2]=dd;
return number;
//不能这么返回,可以返回一个数组
//return yy,mm,dd;
}
}
在本题中遇到了一些问题:
1.还是不熟悉数组的命名方式:int[]number=new int[3];
2.对于方法了解不够透彻:不能返回多个数据,如若返回多个数据,可以存在一个数组中,返回数组。
public static int[] change(String s),要这样定义一个返回数组的方法。
3.使用了字符串的函数,如substring(begin,end),substring为获取子串的方法,获取字符串中[begin,end-1]位置的子字符串。
如果只输入一个begin,则为从begin数字到字符串尾部。
4.使用了将字符串转换为数字的方法Integer.parseInt(s)的方法。
5.重温了判断闰年的方法:能被4整数且不能被100整除,或可以整除400。
参考了其他人的方法发现了一个Java类
import java.text.ParseException;
import java.text.SimpleDateFormat;
会后续参考并写出自己理解。