用Java编日历程序 20

这是写的设置日历格式的一段,那位高手能帮忙改一下。看看这个思路能否行的通。真的很感谢!publicvoidnewCalendar(inta,intb){calendar.... 这是写的设置日历格式的一段,那位高手能帮忙改一下。看看这个思路能否行的通。真的很感谢!
public void newCalendar(int a,int b){
calendar.set(a,b,1);
int day=calendar.get(Calendar.DAY_OF_WEEK);
for(int m=0;m<day;m++){
date[0][m]=""; //加空格
}
for(int r=day-1;r<7;r++){

date[0][r]=String.valueOf(n); //131,132
n++;

}
p=8-day;
t=calendar.getActualMaximum(b);
for(int row=1;row<6;row++){
for(int line=0;line<7;line++){
date[row][line]=String.valueOf(p);
p++;
if(p>calendar.getActualMaximum(b))
break;
}
}

}}

public void actionPerformed(ActionEvent e){
if(e.getSource()==button){

try{

q=Integer.parseInt(field.getText());
z=number.getSelectedIndex();

calendar.set(q,z,1);
int day=calendar.get(Calendar.DAY_OF_WEEK);
for(int m=0;m<day;m++){
date[0][m]=""; //加空格
}
for(int r=day-1;r<7;r++){

date[0][r]=String.valueOf(n); //131,132
n++;

}
p=8-day;
t=calendar.getActualMaximum(z);
for(int row=1;row<6;row++){
for(int line=0;line<7;line++){
date[row][line]=String.valueOf(p);
p++;
if(p>calendar.getActualMaximum(z))
break;
}
}
}
展开
 我来答
席宏阔U6
2010-06-28 · TA获得超过686个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:217万
展开全部
首先第二行
calendar.set(a,b,1);
应该改为
calendar.set(a,b-1,1);
因为月份,b 表示 b+1月。

其次
int day=calendar.get(Calendar.DAY_OF_WEEK);
应改为
int day=calendar.get(Calendar.DAY_OF_WEEK) - 1;
因为日历对象调用get方法获取的周:1表示星期日,2表示星期一,以此类推
那么你的第四行循环时,当day取1,即当星期日时,你的空格准备放在什么地方?(回想下日历的样子)

我的水平有限,所以看你的代码感觉有点乱乱的,有点晕,而且代码不全。

给你个很简练的日历程序,你对比着看看你的日历的问题吧。我觉得你把底下的这个弄懂了,你的日历的问题,也差不错解决了。

代码我也给你注释了一些。希望你认真看,然后自己解决问题,这样进步是最大的:

import java.util.*;

public class E6_3 {
public static void main(String args[]) {
System.out.println("日 一 二 三 四 五 六");
Calendar calendar = Calendar.getInstance();
calendar.set(2006, 11, 1); // 将日历翻到2006年12月1日
int 星期几 = calendar.get(Calendar.DAY_OF_WEEK) - 1;
// 获取1日是星期几(get方法返回的值是1表示星期日,星期六返回的值是7)
String a[] = new String[星期几 + 31]; //将输出以字符串的形式赋值到数组里
for (int i = 0; i < 星期几; i++) {//在没有日期的地方放空格
a[i] = " ";
}
for (int i = 星期几, n = 1; i < 星期几 + 31; i++) {//填补日期数字
if (n <= 9) {//当他是个位数时为了保持整齐,适当空行
a[i] = String.valueOf(n) + " ";
} else
a[i] = String.valueOf(n) + " ";
n++;
}
for (int i = 0; i < a.length; i++) {//输出日期,每七个换一次行
if (i % 7 == 0) {
System.out.println();
}
System.out.print(a[i]);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
博思aippt
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼word文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景... 点击进入详情页
本回答由博思aippt提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式