该方案的指导原则遵循helper方法,并使用for循环正确
问题B:新年日期。目标:了解Switch结构,帮助器方法以及使用具有标记值的While循环。
您将设置一个名为Year2012的类来处理给定月份(mm)或一个月加一天(dd)作为整数值的日期。它具有以下get方法:1)MonthName返回一个字符串值,即本月的名称,例如9月,6月,5月等2)DaysInMonth返回当月的天数。 3)DayOfTheYear返回序号年份日期(数字在1-365之间,通常称为Julian日期)。提示,使用for循环添加每个前一个月的日期,然后添加当前月份的日期。 4)DayOfWeek,它返回一个字符串值,它是当天的名字,例如星期一,星期二等。
其中一些方法可以用作其他方法的'帮手'方法。所有方法将直接或间接使用switch语句。每种方法都会根据发送给它的值来计算返回值,因此不存在类属性,只有默认的构造函数。所有的逻辑必须包含在你自己的方法中。 (也就是说,你不会为你的逻辑使用现有的API类)。 设计一个测试应用程序,询问用户一个月和一天,然后显示月份的名称,月份的天数,这一天的这一周,以及这一天的朱利安日期。编写程序以使用While循环处理日期,直到输入标记值。多次运行程序以测试不同日期,但使用以下五个日期进行最终运行:Jan.1,Apr.18,Aug.2,Nov.28,& Dec.15。
我遇到了这个程序的某些部分的麻烦。具体使用Julian日期方法和dayofTheWeek方法。 Julian日期不断打印出1(我还没有测试过很多日期),并且是dayofTheWeek方法的辅助方法,您可以查看我的代码并查看我的问题是什么?
public String monthName(int month)
{
String mon = null;
switch (month)
{
case 1:
mon = "January";
break;
case 2:
mon = "February";
break;
case 3:
mon = "March";
break;
case 4:
mon = "April";
break;
case 5:
mon = "May";
break;
case 6:
mon = "June";
break;
case 7:
mon = "July";
break;
case 8:
mon = "August";
break;
case 9:
mon = "September";
break;
case 10:
mon = "October";
break;
case 11:
mon = "November";
break;
case 12:
mon = "December";
break;
default:
mon = "Inccorect entry";
break;
}
return mon;
}
public int daysInMonth(int month)
{
int days = 0;
switch (month)
{
case 1:
days = 31;
break;
case 2:
days = 28;
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
default:
days = 0;
}
return days;
}
public int dayOfTheYear(int month, int day)
{
int julian = 0;
for (int count = 1; count == month; count++)
{
julian += daysInMonth(count);
}
return julian;
}
public String dayOfWeek(int month, int day)
{
int daysSoFar = dayOfTheYear(month, day);
int weekDay = daysSoFar % 7;
String dayName = null;
switch (weekDay)
{
case 1:
dayName = "Sunday";
break;
case 2:
dayName = "Monday";
break;
case 3:
dayName = "Tuesday";
break;
case 4:
dayName = "Wednesday";
break;
case 5:
dayName = "Thursday";
break;
case 6:
dayName = "Friday";
break;
case 7:
dayName = "Saturday";
break;
default:
dayName = "Incorrect entry";
}
return dayName;
}
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
Year2012 year = new Year2012();
System.out.println("Please enter a month using integers (Jan = 1): ");
int month = keyboard.nextInt();
System.out.println("Please enter a day within that month: ");
int day = keyboard.nextInt();
System.out.println("Month: " + year.monthName(month));
System.out.println("Number of days in month: " + year.daysInMonth(month));
System.out.println("Day of the week: " + year.dayOfWeek(month, day));
System.out.println("Julian date: " + year.dayOfTheYear(month, day));
}
}
@jzworkman:请不要将标签“作业”添加到问题中;它已经过时并正在被删除。 – geoffspear 2013-03-14 18:46:53
@Wooble我不知道,直到它被删除我怎么知道这一点?有没有讨论为什么这是在某个地方完成的?我知道社区不愿直接为人做功课,所以我很好奇这将如何进行下去。 – jzworkman 2013-03-18 15:11:25
@jzworkman:http://meta.stackexchange.com/questions/147100/trogdor-ate-my-homework-tag(它也在标签的wiki标签中)。当你去添加标签时,它应该弹出提到它已经过时的描述。 – geoffspear 2013-03-18 15:13:29