题意整理。
- 输入任意一个年份,输出该年内各个月份的天数。
方法一(字符串分割)
1.解题思路
- 首先通过字符串分割得到具体的年、月、日、时、分、秒。
- 将日期调整成"yyyy-MM-dd HH:mm:ss"的格式,并进行解析。
- 输出北京时间和纽约时间,计算纽约时间时,在北京时间的基础上减去12小时。
图解展示:
2.代码实现
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Scanner in = new Scanner(System.in);
String str1 = in.nextLine();
//将输入的日期用空格分割成字符串数组
String[] arr=str1.split(" ");
//如果不是6位长度,则输入不正常
if(arr.length!=6){
System.out.println("您输入的数据不合理");
}
else{
//将日期调整成"yyyy-MM-dd HH:mm:ss"的格式
String str=arr[0]+"-"+arr[1]+"-"+arr[2]+" "+arr[3]+":"+arr[4]+":"+arr[5];
//解析日期
Date date=sdf.parse(str);
//输出北京时间
System.out.println("北京时间为:"+sdf.format(date.getTime()));
//输出纽约时间
System.out.println("纽约时间为:"+sdf.format(date.getTime()-(long)12*60*60*1000));
}
}
}
3.复杂度分析
- 时间复杂度:由于分割的字符串为固定的常数长度,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。