何必要再造轮子,有现成的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;
}

解决方案 »

  1.   

    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;
    m=dataMonth;
    /* set q */
    q = dataDay;
    /* 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;
    }
    }网上搜了下这个算法,实在是没看明白,但给你改了下
      

  2.   

    泽勒一致性是我在一本java入门书上的练习题上看到的,难道错了
    楼上的这位改了那个地方啊....
      

  3.   

    楼主你好,我也遇到了同样的问题,而且也正好老是出现星期六,现在知道为什么了!!!!!!我也是看了一个成功执行的例子才发现的!
    中文译本里有一行是这么写的——“q是某月的天数”
    而在我们专业发的英语原版里——“q is the day of the month”     而不是 “q is number ofdays in the month ”所以 q 应该直接等于   我们输入的 那一天就好了!