黑马程序员技术交流社区
标题:
看我这代码有什么问题,跟月份相差一天
[打印本页]
作者:
酷我之情
时间:
2016-8-23 22:08
标题:
看我这代码有什么问题,跟月份相差一天
package com.heim.zuoye;
import java.util.Calendar;
import java.util.Scanner;
public class Test3 {
/**
* (1)通过键盘录入日期字符串,格式(2015-10-20)
(2)输出该日期是星期几及这一年的第几天
(3)如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是 2015年的第 293 天"
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入日期字符串,格式(2015-10-20):");
String line = sc.nextLine();
String[] s = line.split("-");
int[] arr = new int[s.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(s[i]);
}
Calendar c = Calendar.getInstance();
c.set(arr[0], arr[1], arr[2]);
c.get(Calendar.DAY_OF_YEAR);
System.out.println(c.get(Calendar.YEAR) + "-" + getNum((c.get(Calendar.MONTH)+1))
+ "-" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "-" + getWeek(c.get(Calendar.DAY_OF_WEEK))
+"第" + c.get(Calendar.DAY_OF_YEAR) + "天");
}
public static String getWeek(int week) {
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[week];
}
public static String getNum(int num) {
return num > 0 ? "" + num : "0" + num;
}
}
作者:
马蚁牙黑
时间:
2016-8-24 18:58
看不懂,咋搞
作者:
张彦虎
时间:
2016-8-24 20:42
看不懂,好高深呀
作者:
阿卜
时间:
2016-8-24 21:04
c.set(arr[0], arr[1], arr[2]);
这里有问题,你设置MONTH的时候并没有考虑到MONTH是从0开始的。或者说录入者并不会想到。
而你获取MONTH字段的时候又给它+1了,所以实际的比你期望的多了1个月。
以下是set的API文档说明。
set
public final void set(int year,
int month,
int date)
设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。
参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
作者:
itcoder
时间:
2016-8-24 22:13
顶顶顶顶顶顶顶顶顶顶顶
作者:
DadouBK
时间:
2016-8-24 23:11
不太懂是什么意思,观察观察
作者:
酷我之情
时间:
2016-8-25 22:40
阿卜 发表于 2016-8-24 21:04
c.set(arr[0], arr[1], arr[2]);
这里有问题,你设置MONTH的时候并没有考虑到MONTH是从0开始的。或者说录 ...
好的 谢谢啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2