我正在写一个java程序来输入年份和月份,格式为“1999-5”,意思是1999年和6月。 (月份从0开始= 1月1日)。
1999年是年份,5是月份的数字序列(对应于6月)。该程序应显示1999年6月28日下降的日期,在这种情况下,输出将是星期一。
我有逻辑和部分代码。我输入一个字符串,拆分它,解析为整数和处理。如何在字符串输入中分隔“ - ”分隔符。
该程序的输入应为“1999-5” 输出应该是星期一。 (1999年6月28日星期一)
int num;
Scanner sc=new Scanner(System.in);
String name=sc.nextLine();
String delimiter = "-";
temp= name.split(delimiter);
num= Integer.parseInt(name);
System.out.println(temp);
System.out.println(num);
请告诉我是否有更好的方法。
答案 0 :(得分:2)
使用带有"-dd"
的模式更新@TheStijn的想法来操纵输入。
但我们还需要操纵月份以获得输入5
String pattern = "yyyy-MM-dd";
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
formatter.setLenient(false);
int year = Integer.parseInt(name.substring( 0, name.lastIndexOf( '-' ) ));
int month = Integer.parseInt(name.substring( name.lastIndexOf( '-' )+1 ));
Date date = formatter.parse(year+"-"+(month+1)+"-28");
if( date != null ) {
System.out.println(date);
}
答案 1 :(得分:2)
在这种情况下,您最好使用SimpeDateFormat
。
Date d = new SimpleDateFormat("yyyy-MM-dd").parse(name + "-28")
使用Calendar
获取星期几:
Calendar cal = Calendar.getInstance();
cal.setTime(d);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)
//switch (dayOfWeek) ...
答案 2 :(得分:1)
你可以这样做:
String name = "1999-5";
String[] temp = name.split("-");
int year = Integer.parseInt(temp[0]);
int month = Integer.parseInt(temp[1]);
请注意parseInt()
可能会抛出NumberFormatException
,因此您可能想抓住它。
答案 3 :(得分:0)
temp
应该是一个字符串数组(String[] temp
),并且parseInt,num [0]和num [1]分别得到1999和5。