帮助这个java程序

时间:2011-05-12 07:24:59

标签: java

我正在写一个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);

请告诉我是否有更好的方法。

4 个答案:

答案 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,因此您可能想抓住它。

BTW,Joda Time可以为您提供一周中的某一天:看看here

答案 3 :(得分:0)

temp应该是一个字符串数组(String[] temp),并且parseInt,num [0]和num [1]分别得到1999和5。