我正在制作一个可以完成多项任务的工具,而我现在正处于最后一个功能:
您输入日期,它会告诉您该日期的星期几。
所以我在这里有两个问题:
我的代码在这里:
public static void main(String[] args) {
int d = Integer.parseInt(args[0]);
int m = Integer.parseInt(args[1]);
int y = Integer.parseInt(args[2]);
int y0 = y - (14 - m) / 12;
int x = y0 + y0/4 - y0/100 + y0/400;
int m0 = m + 12 * ((14 - m) / 12) - 2;
int d0 = (d + x + (31*m0)/12) % 7;
System.out.println("Sunday = 0\nMonday = 1\nTuesday = 2\nWednesday = 3\nThursday = 4\nFriday = 5\nSaturday = 6\nThis date is on a:");
System.out.println(d0);
基本上,这段代码最初是用于控制台的,现在我想将它实现到Swing GUI应用程序中。
我只用了一周的时间学习Java,所以请原谅我,如果问题很明显或很容易修复......但有人能弄清楚如何工作吗?谢谢!
答案 0 :(得分:2)
你的问题就在于它的日期是什么格式。
你只为他们提供JTextArea
输入值,所以他们可以输入任何东西......
首先,首先,您需要一种方法来接受传入的值......
public String toDayOfWeek(String date) {
}
从此处您需要将传入值格式化为Date
String dayOfWeek = null;
try {
Date date = DateFormat.getDateInstance().parse(date);
} catch (ParseException exp) {
dayOfWeek = date + " is an invalid date format";
}
return dayOfWeek;
(显然,以上属于toDayOfWeek(String)
方法)
现在,就个人而言,我会将Date
值传递给另一种方法,但这会导致我疯狂......
public String toDayOfWeek(Date date) {
// Now you could extract the various values from the Date object
// but those methods are deprecated...
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int day = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH); // Months are 0 based
int year = cal.get(Calendar.YEAR);
// Your calculation here...
return yourDayCalculation;
}
但说实话,这样做会更简单,更容易......
public String toDayOfWeek(Date date) {
// Now you could extract the various values from the Date object
// but those methods are deprecated...
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return DateFormatSymbols.getInstance().getWeekdays()[cal.get(Calendar.DAY_OF_WEEK)];
}
所以你最终会得到两种方法......
public String toDayOfWeek(String date) {
String dayOfWeek = null;
try {
Date date = DateFormat.getDateInstance().parse(date);
dayOfWeek = toDayOfWeek(date);
} catch (ParseException exp) {
dayOfWeek = date + " is an invalid date format";
}
return dayOfWeek;
}
public String toDayOfWeek(Date date) {
// Now you could extract the various values from the Date object
// but those methods are deprecated...
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return DateFormatSymbols.getInstance().getWeekdays()[cal.get(Calendar.DAY_OF_WEEK)];
}
答案 1 :(得分:1)
您可以使用Calendar。 看看这段代码,你就会明白这个想法
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.MONTH,0);//Note that months start at 0 i.e. January is 0
cal.set(Calendar.DAY,1);
System.out.println(cal.get(Calendar.DAY_OF_WEEK)));
答案 2 :(得分:1)
首先检查
中args中是否有3个元素if(args.length == 3) // colculate else System.out.println("Usage: java DateID <month> <day> <year>"):
答案 3 :(得分:1)
假设您的GUI未显示为示例...
对于第二个问题,JTextArea继承自JTextComponent,您将在其中找到the setText method。由于它接受字符串而不是整数,因此您可能希望执行以下操作:
String.valueOf(d0);
我相信你也可以将d0连接到一个字符串文字 - 比如你的println中的那个 - 并且也一样。
编辑:请记住,setText只会设置该字段的值。如果您想获取文本,则需要在指定的任何分隔符上使用the getText method和split the resulting string。结果将存储在一个字符串数组中,然后您可以将其转换为整数并与Calendar ala Abu的响应一起使用。