java编程菜鸟求大神指教,其实应该是很简单的问题

赤血足风 2013-04-16 01:54:20
试着编了用泽勒一致性计算某天是星期几的一个简单程序;编译通过了可是怎么每次都是星期六啊……真心不懂了,跪求指教
下面是代码:



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;
}
}
...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BensonLaur 2014-10-28
  • 打赏
  • 举报
回复
楼主你好,我也遇到了同样的问题,而且也正好老是出现星期六,现在知道为什么了!!!!!! 我也是看了一个成功执行的例子才发现的! 中文译本里有一行是这么写的——“q是某月的天数” 而在我们专业发的英语原版里——“q is the day of the month” 而不是 “q is number ofdays in the month ” 所以 q 应该直接等于 我们输入的 那一天就好了!
  • 打赏
  • 举报
回复
一楼正解,竟然还要求最少六个字符
king1701007 2013-04-17
  • 打赏
  • 举报
回复
引用 5 楼 viszl 的回复:
Java code ? 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 import javax.swing.JOptionPane; public class JudgeDate { ……
没细看懂
赤血足风 2013-04-16
  • 打赏
  • 举报
回复
泽勒一致性是我在一本java入门书上的练习题上看到的,难道错了 楼上的这位改了那个地方啊....
loveofmylife 2013-04-16
  • 打赏
  • 举报
回复
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;
	}
}
网上搜了下这个算法,实在是没看明白,但给你改了下
tianma630 2013-04-16
  • 打赏
  • 举报
回复
泽勒一致性是啥
十年彩虹 2013-04-16
  • 打赏
  • 举报
回复
引用 1 楼 IceWee 的回复:
何必要再造轮子,有现成的Calendar就要用啊! Java code?12345678910111213141516171819202122232425262728293031static String getWeekday(Date date) { String weekday = ""; Calendar calendar = Cale……
+1
qh19791979 2013-04-16
  • 打赏
  • 举报
回复
学习了,很有裨益
长公子冰 2013-04-16
  • 打赏
  • 举报
回复
何必要再造轮子,有现成的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;
	}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧