如何在java中显示日历

如何在java中显示日历,java,calendar,Java,Calendar,我目前正在做一个习题集,我必须创建一个日历,显示一年中的所有月份,包括其中的月份天数。但是,我对每个月第一行的间隔有问题。在课堂上,我们只学习了switch语句,if,else,while,do-while,for循环 以下是我其中一个月的当前显示内容: 图中没有显示我的输入,但我写的是2016年,5年开始的工作日 同样,这是一幅理想的图画。我想我的问题可能是我使用的方程:int firstdayeahmonth=(daysMonth+firstdayear)%7;虽然老师给了我们这个等式,

我目前正在做一个习题集,我必须创建一个日历,显示一年中的所有月份,包括其中的月份天数。但是,我对每个月第一行的间隔有问题。在课堂上,我们只学习了switch语句,if,else,while,do-while,for循环

以下是我其中一个月的当前显示内容:

图中没有显示我的输入,但我写的是2016年,5年开始的工作日

同样,这是一幅理想的图画。我想我的问题可能是我使用的方程:int firstdayeahmonth=(daysMonth+firstdayear)%7;虽然老师给了我们这个等式,但它似乎不起作用

正如您可以看到的,第一行的空格一直在左边,它应该与指定的日期对齐,在这种情况下,1月1日应该与星期五对齐,1月2日应该与星期六对齐,但现在是星期日和星期一

    import java.util.Scanner;

    public class DisplayCalendar
       {
        public static void main(String[] args)
        {
        //Create a new scanner 
        Scanner input = new Scanner(System.in);

        // Prompt user to enter year 
        System.out.print("Enter a year: ");
        int year = input.nextInt();

        // Prompt user to enter first day of the year
        System.out.print("Enter the weekday that the year starts: ");
        int firstDayYear = input.nextInt();

        // A for loop that prints out each month
        for(int month = 1; month <= 12; month++)
        {
            // Set the value of the amount of days in a month
            int daysMonth = 0;

            // Set value of the month 
            String monthDisplay = "";   

            // Find name of each month and number of days
            switch(month)
            {
                case 1: monthDisplay = "January"; 
                    daysMonth = 31;
                    break;

                case 2: 
                    monthDisplay = "February";
                    int leapYear = 0;
                    while (leapYear > -1)
                    {   
                        // Count all years that are divisible by 4 to be a leap year.
                        leapYear += 4;

                        // If the year inputted is a leap year, the days of the month will be 29.
                        if (year == leapYear)
                        {
                            daysMonth = 29;
                            break;
                        }

                        else 
                        {
                            daysMonth = 28;
                        }
                    }
                    break;

                case 3: monthDisplay = "March";
                    daysMonth = 31;
                    break;

                case 4: monthDisplay = "April";
                    daysMonth = 30;
                    break; 

                case 5: monthDisplay = "May";
                    daysMonth = 31;
                    break;

                case 6: monthDisplay = "June";
                    daysMonth = 30;
                    break; 

                case 7: monthDisplay = "July";
                    daysMonth = 31;
                    break;

                case 8: monthDisplay = "August";
                    daysMonth = 31;
                    break;

                case 9: monthDisplay = "September";
                    daysMonth = 30;
                    break;

                case 10: monthDisplay = "October";
                    daysMonth = 31;
                    break;

                case 11: monthDisplay = "November";
                    daysMonth = 30;
                    break;

                case 12: monthDisplay = "December";
                    daysMonth = 31;
                    break; 

                // If the month is not recognized, dialog box will be displayed, and then exits program. 
                default : System.out.print("Invalid: Your month is not recognized. ");
                    System.exit(0); 

            }
            // Display the month and year
            System.out.println("                      "+ monthDisplay + " " + year);

            // Display the lines
            System.out.println("_____________________________________");

            // Display the days of the week
            System.out.println("Sun     Mon     Tue     Wed     Thu     Fri     Sat");

            // Print spaces depending on the day the month starts.
            int firstDayEachMonth = (daysMonth + firstDayYear)%7;
            for (int space = 1; space <= firstDayEachMonth; space++)
                System.out.print("   ");

            // Print the days 
            for (int daysDisplay = 1; daysDisplay <= daysMonth; daysDisplay++)
            {
                if (firstDayYear%7 == 0)
                    System.out.println();

                System.out.printf("%3d      ", daysDisplay);
                firstDayYear += 1;
            }
            System.out.println();
        }

    }
}   
import java.util.Scanner;
公共类显示日历
{
公共静态void main(字符串[]args)
{
//创建一个新的扫描仪
扫描仪输入=新扫描仪(System.in);
//提示用户输入年份
System.out.print(“输入年份:”);
int year=input.nextInt();
//提示用户输入每年的第一天
System.out.print(“输入一年开始的工作日:”);
int firstDayYear=input.nextInt();
//每月打印的for循环
对于(整数月份=1;月份-1)
{   
//将所有可被4整除的年份计算为闰年。
年+=4;
//如果输入的年份是闰年,则该月的天数为29天。
如果(年==年)
{
daysMonth=29;
打破
}
其他的
{
daysMonth=28;
}
}
打破
案例3:monthDisplay=“三月”;
daysMonth=31;
打破
案例4:monthDisplay=“四月”;
daysMonth=30;
打破
案例5:monthDisplay=“May”;
daysMonth=31;
打破
案例6:monthDisplay=“June”;
daysMonth=30;
打破
案例7:monthDisplay=“七月”;
daysMonth=31;
打破
案例8:monthDisplay=“八月”;
daysMonth=31;
打破
案例9:monthDisplay=“九月”;
daysMonth=30;
打破
案例10:monthDisplay=“10月”;
daysMonth=31;
打破
案例11:monthDisplay=“11月”;
daysMonth=30;
打破
案例12:monthDisplay=“12月”;
daysMonth=31;
打破
//如果不识别月份,将显示对话框,然后退出程序。
默认值:System.out.print(“无效:您的月份无法识别”);
系统出口(0);
}
//显示月份和年份
系统输出打印项次(“+月显示+”+年);
//显示行
System.out.println(“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
//显示一周中的几天
System.out.println(“星期一星期二星期三星期四星期五星期六”);
//根据月份开始的日期打印空格。
int firstdayeahmonth=(daysMonth+firstDayYear)%7;
对于(int-space=1;space,您能试试这个例子吗?
我可以看到以下输出:

   February 2016
   Sun  Mon Tue   Wed Thu   Fri  Sat
        1    2    3    4    5    6 
   7    8    9   10   11   12   13 
  14   15   16   17   18   19   20 
  21   22   23   24   25   26   27 
  28   29
package-general;
导入java.util.Scanner;
公共类显示日历{
公共静态void main(字符串[]args){
int Y=2016;//年
int startDayOfMonth=5;
int spaces=startDayOfMonth;
//开始月日
//月份[i]=月份i的名称
字符串[]个月={
“”,//保留为空,以便从月份[1]=“一月”开始
“一月”、“二月”、“三月”,
“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”,
“十月”、“十一月”、“十二月”
};
//天数[i]=第i个月的天数
int[]天={
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
对于(int M=1;M
public class exercie5\u 29display日历日){
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
//创建一个新的扫描仪
扫描仪输入=新扫描仪(System.in);
//提示用户输入年份
System.out.print(“输入年份:”);
int year=input.nextInt();
//提示用户输入每年的第一天
System.out.println(“输入一年开始的工作日:”);
int day=input.nextInt();
int dayCounter=天;
整数天=0;
字符串monthx=“”;

对于(int month=1;month,因为这似乎是一个家庭作业,所以我不会费心给你正确的算法。这会挫败你或其他有同样问题的人练习编程和分析技能的目的


在这一行中,
for(int space=1;spaceimport java.util.Scanner

公共类显示日历{

public static void main(String[] args) {
    String Months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    int numday[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    Scanner in = new Scanner(System.in);
    System.out.println("enter the year");
    int year = in.nextInt();
    if ((((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))) {
        numday[1] = 29;
    }
    System.out.println("enter the day start the year ");
    int day = in.nextInt();
    for (int i = 1; i <= 12; i++) {
        System.out.println("\t" + Months[i - 1]+" "+ year);
        System.out.println("ـــــــــــــــــــــــــ");
        System.out.printf("%-4s%-4s%-4s%-4s%-4s%-4s%-4s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");
        day = manh(day, numday[i - 1]);
    }

}

public static int manh(int day, int numday) {
    int a[][] = new int[6][7];
    int counter = 1;
    int j = 0;
    for (int i = 0; i < 6; i++) {
        for (j = day; j < 7; j++) {
            a[i][j] = counter;
            day++;
            counter++;
            if (counter == numday + 1) {
                break;
            }
        }
        day = 0;
        if (counter == numday + 1) {
            break;
        }

    }
    for (int i = 0; i < 6; i++) {
        for (int f = 0; f < 7; f++) {
            System.out.printf("%-4s", a[i][f] == 0 ? "" : a[i][f]);
        }
        System.out.println();

    }
    int dayret = j + 1;
    return dayret >= 7 ? 0 : dayret;
}
publicstaticvoidmain(字符串[]args)
public class Exercice5_29DisplayCalenderDay {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
      //Create a new scanner 
    Scanner input = new Scanner(System.in);

    // Prompt user to enter year 
    System.out.print("Enter a year: ");
    int year = input.nextInt();

    // Prompt user to enter first day of the year
    System.out.println("Enter the weekday that the year starts: ");
    int day = input.nextInt();
    int dayCounter = day;
     int nbrOfDays = 0;
     String  monthx = ""; 
    for (int month= 1; month <=12; month++)
    {

                        // Switch to chose the month 
              switch (month)
             {
                  case 1: monthx = "January";
                             nbrOfDays = 31;
                             break;
                  case 2: monthx = "February";
                                     if ( year % 4 == 0 && year % 100 !=0 || year % 400 == 0)
                      {
                             nbrOfDays = 29;
                             break;
                      }
                                     else
                         {  nbrOfDays = 28;
                             break;
                         }
                 case 3: monthx = "March";
                             nbrOfDays = 31;
                             break; 
                  case 4: monthx = "April";
                             nbrOfDays = 30;
                             break; 
                         case 5: monthx = "May";
                             nbrOfDays = 31;
                             break;

                         case 6: monthx = "June";
                             nbrOfDays = 30;
                             break;
                          case 7: monthx = "July";
                             nbrOfDays = 31;
                             break;
                          case 8: monthx = "August";
                             nbrOfDays = 31;
                             break;
                    case 9: monthx = "September";
                             nbrOfDays = 30;
                             break; 
                    case 10: monthx = "October";
                             nbrOfDays = 31;
                             break; 
                    case 11: monthx = "November";
                             nbrOfDays = 30;
                             break; 
                         case 12: monthx = "December";
                             nbrOfDays = 31;
                             break;                  
             }

                 System.out.printf("%15s %d  \n", monthx , year);
                 System.out.println("----------------------------");
                 System.out.printf("%s %s %s %s %s %s %s\n ", "Sun","Mon","Tue", "Wed", "Thu","Fri","Sat");

                 for (int space =1; space<=day; space++) 
                 {
                     System.out.printf("%4s", "    ");
                 }
                 for (int i = 1; i <=nbrOfDays; i++)
                 {
                    dayCounter++;
                    if ( dayCounter% 7==0)
                     System.out.printf("%- 4d\n", i);
                    else
                    System.out.printf("%-4d", i);

                 }
                 day = (day + nbrOfDays)%7;

                         System.out.println();

    }    

}
}
if (firstDayYear%7 == 0)
   System.out.println();
public static void main(String[] args) {
    String Months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    int numday[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    Scanner in = new Scanner(System.in);
    System.out.println("enter the year");
    int year = in.nextInt();
    if ((((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))) {
        numday[1] = 29;
    }
    System.out.println("enter the day start the year ");
    int day = in.nextInt();
    for (int i = 1; i <= 12; i++) {
        System.out.println("\t" + Months[i - 1]+" "+ year);
        System.out.println("ـــــــــــــــــــــــــ");
        System.out.printf("%-4s%-4s%-4s%-4s%-4s%-4s%-4s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");
        day = manh(day, numday[i - 1]);
    }

}

public static int manh(int day, int numday) {
    int a[][] = new int[6][7];
    int counter = 1;
    int j = 0;
    for (int i = 0; i < 6; i++) {
        for (j = day; j < 7; j++) {
            a[i][j] = counter;
            day++;
            counter++;
            if (counter == numday + 1) {
                break;
            }
        }
        day = 0;
        if (counter == numday + 1) {
            break;
        }

    }
    for (int i = 0; i < 6; i++) {
        for (int f = 0; f < 7; f++) {
            System.out.printf("%-4s", a[i][f] == 0 ? "" : a[i][f]);
        }
        System.out.println();

    }
    int dayret = j + 1;
    return dayret >= 7 ? 0 : dayret;
}