Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
此java程序的帮助_Java - Fatal编程技术网

此java程序的帮助

此java程序的帮助,java,Java,我正在编写一个java程序,以“1999-5”格式输入年份和月份,即1999年和6月。(月份从0=1月,1=2月开始) 其中1999是年份,5是月份的数字序列(对应于6月)。程序应该显示1999年6月28日的日期,在这种情况下,输出将是星期一 我有逻辑和部分代码。我输入一个字符串,将其拆分,将其解析为整数并进行处理。如何在字符串输入中分隔“-”分隔符 该计划的投入应为“1999-5年” 输出应该是星期一。(一九九九年六月二十八日星期一) 请告诉我是否有更好的方法。temp应该是一个字符串数组(s

我正在编写一个java程序,以“1999-5”格式输入年份和月份,即1999年和6月。(月份从0=1月,1=2月开始)

其中1999是年份,5是月份的数字序列(对应于6月)。程序应该显示1999年6月28日的日期,在这种情况下,输出将是星期一

我有逻辑和部分代码。我输入一个字符串,将其拆分,将其解析为整数并进行处理。如何在字符串输入中分隔“-”分隔符

该计划的投入应为“1999-5年” 输出应该是星期一。(一九九九年六月二十八日星期一)


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

temp
应该是一个字符串数组(
string[]temp
),您可以分别解析int、num[0]和num[1]以获得1999和5。

使用带有
“-dd”
的模式来操作输入

但我们还需要操纵月份,以获得6月份的输入
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);
}

您可以这样做:

    String name = "1999-5";
    String[] temp = name.split("-");
    int year = Integer.parseInt(temp[0]);
    int month = Integer.parseInt(temp[1]);
请注意,
parseInt()
可能会抛出一个
NumberFormatException
,因此您可能希望捕获它


顺便说一句,你可以得到一周中的哪一天:看看。

在这种情况下,你最好使用
SimpeDateFormat

Date d = new SimpleDateFormat("yyyy-MM-dd").parse(name + "-28")
使用
日历
获取星期几:

Calendar cal = Calendar.getInstance();
cal.setTime(d);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)
//switch (dayOfWeek) ...

你为什么要打印临时工?split方法返回一个字符串数组,因此您应该对temp[0]和temp[1]进行parseInt(当然,如果它们存在的话)。no no im not printing temp。我在测试代码,所以把它弄乱了一点。@TheStijin:我没有注意到问题被标记为
家庭作业
@macro:我没有标记为家庭作业!我不知道这是怎么回事。@user750092:另一个名声更高的SO用户也这样做了,因为你的问题看起来像是作业。真的是作业吗?如果没有,我可以去掉标签。虽然看起来像是家庭作业,但这不是家庭作业。这是我朋友一直坚持的问题。他现在清楚了。多亏了你们。。不管它是否也被标记为家庭作业。
SimpleDateFormat
是否关心在指定
MM
时当月没有前导0,还是只需要使用
M
?不,不关心,2011-5可以使用格式yyyy-MM@veredesmarald字体正如thestijn所说,不要紧,我认为不需要月+1;看问题的第一行。
Calendar cal = Calendar.getInstance();
cal.setTime(d);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)
//switch (dayOfWeek) ...