該方案的指導原則遵循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