如何在java中显示日历
我目前正在做一个习题集,我必须创建一个日历,显示一年中的所有月份,包括其中的月份天数。但是,我对每个月第一行的间隔有问题。在课堂上,我们只学习了switch语句,if,else,while,do-while,for循环 以下是我其中一个月的当前显示内容: 图中没有显示我的输入,但我写的是2016年,5年开始的工作日 同样,这是一幅理想的图画。我想我的问题可能是我使用的方程:int firstdayeahmonth=(daysMonth+firstdayear)%7;虽然老师给了我们这个等式,但它似乎不起作用 正如您可以看到的,第一行的空格一直在左边,它应该与指定的日期对齐,在这种情况下,1月1日应该与星期五对齐,1月2日应该与星期六对齐,但现在是星期日和星期一如何在java中显示日历,java,calendar,Java,Calendar,我目前正在做一个习题集,我必须创建一个日历,显示一年中的所有月份,包括其中的月份天数。但是,我对每个月第一行的间隔有问题。在课堂上,我们只学习了switch语句,if,else,while,do-while,for循环 以下是我其中一个月的当前显示内容: 图中没有显示我的输入,但我写的是2016年,5年开始的工作日 同样,这是一幅理想的图画。我想我的问题可能是我使用的方程:int firstdayeahmonth=(daysMonth+firstdayear)%7;虽然老师给了我们这个等式,
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;Mpublic 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;
}