日期:2014-05-20  浏览次数:20893 次

java编程菜鸟求大神指教,其实应该是很简单的问题
试着编了用泽勒一致性计算某天是星期几的一个简单程序;编译通过了可是怎么每次都是星期六啊……真心不懂了,跪求指教
下面是代码:



import javax.swing.JOptionPane;

public class JudgeDate {
public static void main(String[] args) {
String dataYearString = JOptionPane.showInputDialog("Please enter the year(e.g., 2008): ");
int dataYear = Integer.parseInt(dataYearString);
String dataMonthString = JOptionPane.showInputDialog("Please enter the month: 1-12: ");
int dataMonth = Integer.parseInt(dataMonthString);
String dataDayString = JOptionPane.showInputDialog("Please enter the day of the month: 1-31: ");
int dataDay = Integer.parseInt(dataDayString);
int dataDate = dateJudging(dataYear,dataMonth,dataDay);
JOptionPane.showMessageDialog(null,"Day of the week is "+ dateConvert(dataDate));
}

public static int dateJudging( int dataYear,int dataMonth,int dataDay ) {
int q=0;
int m=0;
int j=0;
int k=0;
int h=0;
int y = dataYear;
/* set q */
q = dataMonth;
/* set m and year */
if ((dataMonth == 1)||(dataMonth == 2)) {
m = dataMonth + 12;
y -= 1;
}
/** set j */
j = (int)(y / 100);
/** set k */
k = y % 100;
/** compute h */
h = (q + (int)(26 * (m + 1) / 10)  + k + (int)(k / 4) + (int)(j / 4) + (5 * j)) % 7 - 1;
return h;
}
public static String dateConvert(int dataDate) {
String dateString = "";
if(dataDate == 0) dateString = "Saturday";
else if(dataDate == 2) dateString = "Monday";
else if(dataDate == 3) dateString = "Tuesday";
else if(dataDate == 4) dateString = "Wedensday";
else if(dataDate == 5) dateString = "Thursday";
else if(dataDate == 6) dateString = "Friday";
else if(dataDate == 1) dateString = "Sunday";
return dateString;
}
}

------解决方案--------------------
何必要再造轮子,有现成的Calendar就要用啊!
static String getWeekday(Date date) {
String weekday = "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int week = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(week);
switch (week) {
case 1:
weekday = "星期日";
break;
case 2:
weekday = "星期一";
break;
case 3:
weekday = "星期二";
break;
case 4:
weekday = "星期三";
break;
case 5:
weekday = "星期四";
break;
case 6:
weekday = "星期五";
break;
case 7:
weekday = "星期六";
break;
}
return weekday;