用java设计一个2016年7月的日历

import java.util.*;public class JavaApplication17 { public static void main(String[] args) { ClendarBean cb = new ClendarBean(); cb.setMonth(2016); cb.setMonth(11); String a[] = cb.getCalendar(); char str[] ="日一二三四五六".toCharArray(); for(char c:str){ System.out.printf("%3c",c); } for(int i=0;i<a.length;i++){ if(i%7==0){ System.out.println(""); } System.out.printf("%4c",a[i]); } }}class ClendarBean{ int year = 0; int month = 0; public void setYear(int year){ this.year = year; } public void setMonth(int month){ this.month = month; } public String [] getCalendar(){ String a[] = new String[45]; Calendar calendar = Calendar.getInstance(); calendar.set(year,month-1,1); int weekDay = calendar.get(Calendar.DAY_OF_WEEK)-1; int day = 0; if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){ day = 31; } if(month==4 || month==6 || month== 9 || month==11){ day = 30; } if(month==2){ if(year%4==0&year%100 !=0 || year%400==0){ day = 29; } else day = 28; } for(int i=0;i<weekDay;i++){ a[i] =""; } for(int i=weekDay,n=1;i<weekDay+day;i++){ a[i] = String.valueOf(n); n++; } for(int i=weekDay;i<a.length;i++){ a[i] = ""; } return a;}}没有显示错误,但是不出来结果不知道错在哪里

你的Java日历程序我帮你改好了,你看看吧.(改动的地方见注释)

import java.util.*;
public class JavaApplication17{
 public static void main(String[] args) {
 ClendarBean cb = new ClendarBean();
 cb.setMonth(2016);
 cb.setMonth(11);
 String a[] = cb.getCalendar();
 char str[] ="日一二三四五六".toCharArray();
 for(char c:str){
 System.out.printf("%7c",c);//这里改一下"%3c"改成"%7c"
 }
 System.out.println();//这里加一句换行
 
 for(int i=0;i<a.length;i++){
  System.out.printf("%3s",a[i]);//这里"%3c"改成"%3s"并移到这里
  if((i+1)%7==0){//这里i%7==0改成(i+1)%7==0
   System.out.println(); 
  }
 }
 }
}
class ClendarBean{
 int year = 0;
 int month = 0;
 public void setYear(int year){
 this.year = year;
 }
 public void setMonth(int month){
 this.month = month;
 }
 public String [] getCalendar(){
 String a[] = new String[45];
 Calendar calendar = Calendar.getInstance();
 calendar.set(year,month-1,1);
 int weekDay = calendar.get(Calendar.DAY_OF_WEEK)-1;
 int day = 0;
 if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
 day = 31;
 }
 if(month==4 || month==6 || month== 9 || month==11){
 day = 30;
 }
 if(month==2){
 if(year%4==0&year%100 !=0 || year%400==0){
 day = 29;
 }
 else day = 28;
 }
 for(int i=0;i<weekDay+1;i++){//这里i<weekDay;改成i<weekDay+1;
 a[i] ="";
 }
 for(int i=weekDay+1,n=1;i<weekDay+day+1;i++){//这里int i=weekDay;改成int i=weekDay+1; i<weekDay+day;改成i<weekDay+day+1;
 a[i] = String.valueOf(n);
 n++;
 }
 for(int i=weekDay+day+1;i<a.length;i++){//这里i=weekDay+day;改成i=weekDay+day+1;
 a[i] = "";
 }
 return a;
}
}

运行结果

追问

为什么weekDay+day要加一啊

追答

因为weekDay是从0开始的,ClendarBean类getCalendar函数第一个for-i循环,从0到weekDay-1(因为i<weekDay)所以为了循环从0到weekDay要(i<weekDay+1)
以11月为例,weekDay=1,原来的循环从0到i<weekDay只能循环一次,而按照weekDay的意思,应该循环两次weekDay=0一次,weekDay=1一次,所以要i<weekDay+1,同样向后推理,第二个for-i循环for(int i=weekDay+1,n=1;i<weekDay+day+1;i++)weekDay都要加一.第三个for-i循环for(int i=weekDay+day+1;i<a.length;i++)weekDay+day也要加一.

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网