作者: 王靖远 时间: 2013-5-17 22:00
class ZhuanFen
{
public static void main(String[] args)
{
//定义变量用来记录每个星期出现在13号的次数
int x1 = 0;
int x2 = 0;
int x3 = 0;
int x4 = 0;
int x5 = 0;
int x6 = 0;
int x7 = 0;
int first = 1;//定义一个变量记录每个月1号星期数,初始值为1900年1月1日的星期数
int count = 0;//定义一个变量记录每个月13号星期数,初始值为0
switch(a)//计算每个月的第一天的星期数
{
case 1 :
case 3 :
case 5 :
case 7:
case 8:
case 10:
case 12:
first =(30+first)%7;
break;
case 2:
first =(27+first)%7;
break;
case 4 :
case 6 :
case 9 :
case 11 :
first = (29+first)%7;
break;
}
switch(count)//记录13日出现在每个星期的次数
{
case 1:
x1++;
break;
case 2:
x2++;
break;
case 3:
x3++;
break;
case 4:
x4++;
break;
case 5:
x5++;
break;
case 6:
x6++;
break;
case 0:
x7++;
break;
}
}
}
else
{
for(int a=1;a<=12;a++)
{
count = (first+12)%7;
switch(a)
{
case 1 :
case 3 :
case 5 :
case 7:
case 8:
case 10:
case 12:
first =(30+first)%7;
break;
case 2:
first =(28+first)%7;
break;
case 4 :
case 6 :
case 9 :
case 11 :
first = (29+first)%7;
break;
}
switch(count)
{
case 1:
x1++;
break;
case 2:
x2++;
break;
case 3:
x3++;
break;
case 4:
x4++;
break;
case 5:
x5++;
break;
case 6:
x6++;
break;
case 0:
x7++;
break;
}
}
}
}
switch(a)//计算每个月的第一天的星期数
{
case 1 :
case 3 :
case 5 :
case 7:
case 8:
case 10:
case 12:
first =(31+first)%7;
break;
case 2:
first =(28+first)%7;
break;
case 4 :
case 6 :
case 9 :
case 11 :
first = (30+first)%7;
break;
}
switch(count)//记录13日出现在每个星期的次数
{
case 1:
x1++;
break;
case 2:
x2++;
break;
case 3:
x3++;
break;
case 4:
x4++;
break;
case 5:
x5++;
break;
case 6:
x6++;
break;
case 0:
x7++;
break;
}
}
}
else
{
for(int a=1;a<=12;a++)
{
count = (first+12)%7;
switch(a)
{
case 1 :
case 3 :
case 5 :
case 7:
case 8:
case 10:
case 12:
first =(31+first)%7;
break;
case 2:
first =(29+first)%7;
break;
case 4 :
case 6 :
case 9 :
case 11 :
first = (30+first)%7;
break;
}
switch(count)
{
case 1:
x1++;
break;
case 2:
x2++;
break;
case 3:
x3++;
break;
case 4:
x4++;
break;
case 5:
x5++;
break;
case 6:
x6++;
break;
case 0:
x7++;
break;
}
}
}
}
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要查找几年里13日落在星期一,星期二......星期日的次数");
int n = scan.nextInt();
// 判断输入年份是否为正数且小于400在执行以下语句
if (n > 0 && n <= 400) {
Calendar c = Calendar.getInstance();
// 用来代表周日到周六
int[] counts = new int[7];
c.set(1900, 0, 13);// 将时间设置为1900年1月13日,注意0代表1月
do {
// 代表每次增加1个月,比如1900-01-13下个月是1900-02-13
c.add(Calendar.MONTH, 1);
// 获取这天是周几,但要注意,周日是1,周六是7
int i = c.get(Calendar.DAY_OF_WEEK);
// 如果是0周日,则0位置+1,1周一,位置1,+1,类推
counts[i - 1]++;
// 循环条件,只要年是小于定义1900+n就行
} while (c.get(Calendar.YEAR) < 1900 + n);
// 打印
for (int i = 0; i < counts.length; i++) {
System.out.print(counts + " ");
}
} else {
System.out.println("输入错误,下次请输入正数且不大于400");
}
}
}作者: 丘凤光 时间: 2013-5-17 23:58
很遗憾没有得你那个结果,觉得思路并没有错,不知道错在哪里,劳烦查看查看
System.out.println("星期" + i + ":" + count[i - 1]);
}
}
public static int[] getWeek(Date date, int[] count) {
//将得到的日期,转换成星期的形式。
SimpleDateFormat sf = new SimpleDateFormat("EEE", Locale.CHINA);
String week = sf.format(date);
if (week.equals("星期一"))
count[0]++;
if (week.equals("星期二"))
count[1]++;
if (week.equals("星期三"))
count[2]++;
if (week.equals("星期四"))
count[3]++;
if (week.equals("星期五"))
count[4]++;
if (week.equals("星期六"))
count[5]++;
if (week.equals("星期日"))
count[6]++;
return count;
}
}
复制代码
作者: 王靖远 时间: 2013-5-18 16:55
和样例同结果的代码不过我觉得这个是错的。还是我发的上一个是正确的。
class ZhuanFen
{
public static void main(String[] args)
{
//定义变量用来记录每个星期出现在13号的次数
int x1 = 0;
int x2 = 0;
int x3 = 0;
int x4 = 0;
int x5 = 0;
int x6 = 0;
int x7 = 0;
int first = 1;//定义一个变量记录每个月1号星期数,初始值为1900年1月1日的星期数
int count = 0;//定义一个变量记录每个月13号星期数,初始值为0
switch(a)//计算每个月的第一天的星期数
{
case 1 :
case 3 :
case 5 :
case 7:
case 8:
case 10:
case 12:
first =(31+first)%7;
break;
case 2:
first =(28+first)%7;
break;
case 4 :
case 6 :
case 9 :
case 11 :
first = (30+first)%7;
break;
}
switch(count)//记录13日出现在每个星期的次数
{
case 1:
x1++;
break;
case 2:
x2++;
break;
case 3:
x3++;
break;
case 4:
x4++;
break;
case 5:
x5++;
break;
case 6:
x6++;
break;
case 0:
x7++;
break;
}
}
}
else
{
for(int a=1;a<=12;a++)
{
count = (first+12)%7;
switch(a)
{
case 1 :
case 3 :
case 5 :
case 7:
case 8:
case 10:
case 12:
first =(31+first)%7;
break;
case 2:
first =(29+first)%7;
break;
case 4 :
case 6 :
case 9 :
case 11 :
first = (30+first)%7;
break;
}
switch(count)
{
case 1:
x1++;
break;
case 2:
x2++;
break;
case 3:
x3++;
break;
case 4:
x4++;
break;
case 5:
x5++;
break;
case 6:
x6++;
break;
case 0:
x7++;
break;
}
}
}
}