目测 楼主最外层的for循环条件有问题,日历设置年份1990,而判断条件是年份(不是年数)小于n(1-400)条件当然不满足,当然就不会又结果啦。下面是我的代码,因为只判断13日的,只确定终止条件,在while循环中做月份加1处理处理,希望对你有帮助。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Calendar;
public class Main {
static Calendar cal=Calendar.getInstance();
static int[] res=new int[7];//结果存放数组,res[0]为周日
public static void main(String[] args) {
int n=0;
//从1900年1月13日开始计数
cal.set(Calendar.YEAR, 1900);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 13);
try {
System.out.println("请输入年数..");
//录入键盘,获取年数
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
n=new Integer(br.readLine());
getRes(n);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* 获取并打印结果
*/
public static void getRes(int n){
//截止日期19**
if((n<400)&&(n>0)){
while(!(((cal.get(Calendar.YEAR)==(1900+n-1))&&//截止日期****年12月31日
(cal.get(Calendar.MONTH)==11)&&
(cal.get(Calendar.DAY_OF_MONTH)==13)))){
res[cal.get(Calendar.DAY_OF_WEEK)-1]++;
cal.add(Calendar.MONTH, 1);//月份加一
}
res[cal.get(Calendar.DAY_OF_WEEK)-1]++;//最后一天的weekday判断
sop(res);
}else{
System.out.println("年数1-400");
}
}
public static void sop(int[] a){
System.out.println("周日天数"+a[0]);
System.out.println("周一天数"+a[1]);
System.out.println("周二天数"+a[2]);
System.out.println("周三天数"+a[3]);
System.out.println("周四天数"+a[4]);
System.out.println("周五天数"+a[5]);
System.out.println("周六天数"+a[6]);
}
} |