标题:年历打印问题
只看楼主
oujianqiang
Rank: 1
等 级:新手上路
帖 子:138
专家分:0
注 册:2006-5-16
 问题点数:0 回复次数:7 
年历打印问题

我的思路是输入06年后的任一年份,然后打印这年的各个月份
import java.io.*;
public class getDataed
{
public static void main(String args[])throws IOException
{ int q;
String s=new String();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入2006或以后的年份");//2006年的元旦刚好是星期日
s=br.readLine();
q=Integer.parseInt(s);
Dataed dataed=new Dataed(q);
}
}
class Dataed
{ private int nian,n,d,sum=0;
private int arr[]={31,28,31,30,31,30,31,31,30,31,30,31};
private String zhou[]={"日","一","二","三","四","五","六"};
public Dataed(int p)
{this.nian=p;}
public boolean istrue()
{ if(nian%4==0&&nian%100!=0||nian%100==0&&nian%400==0)
return true;
}
public void printyue()
{ if(istrue()) arr[1]=29;
for(int i=0;i<arr.length;i++)
{ System.out.println((i+1)+"月");
for(int j=0;j<zhou.length;j++)
System.out.print(zhou[j]+"\t");
System.out.println();
int r=1,count=1;
for(int s=1;s<=arr[i];s++)
{ if(r==1)
{ getday();
d=d-1;
r++;
}
if(count>1) d=0;
System.out.print(s+"\t");
if((s+d)%7==0)
{System.out.println();
count++;}
}
System.out.println();
}
}
public void getday()
{ int t=nian-2006;
n=t/4;
sum=(t-n)*365+n*366;
d=sum%7;
for(int i=1;i<d;i++)
System.out.print(" "+"\t");
}
}

搜索更多相关主题的帖子: 年历 元旦 打印 String new 
2006-05-20 22:53
oujianqiang
Rank: 1
等 级:新手上路
帖 子:138
专家分:0
注 册:2006-5-16
得分:0 

各位大虾,帮忙纠正一下!


2006-05-20 22:55
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
得分:0 
import java.io.*;
public class getDataed
{
public static void main(String args[])throws IOException
{ int q;
String s=new String();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入2006或以后的年份");//2006年的元旦刚好是星期日
s=br.readLine();
q=Integer.parseInt(s);
Dataed dataed=new Dataed(q);
dataed.printyue(); //你就是没有调用这个函数,当然不会显示了。
}
}
class Dataed
{ private int nian,n,d,sum=0;
private int arr[]={31,28,31,30,31,30,31,31,30,31,30,31};
private String zhou[]={"日","一","二","三","四","五","六"};
public Dataed(int p)
{
this.nian=p;
}
public boolean istrue()
{
if(nian%4==0 && nian%100!=0 || nian%100==0 && nian%400==0)
return true;
else
return false;//这里要返回一个,不然编译有错误;
}
public void printyue()
{ if(istrue()) arr[1]=29;
for(int i=0;i<arr.length;i++)
{ System.out.println((i+1)+"月");
for(int j=0;j<zhou.length;j++)
System.out.print(zhou[j]+"\t");
System.out.println();
int r=1,count=1;
for(int s=1;s<=arr[i];s++)
{ if(r==1)
{ getday();
d=d-1;
r++;
}
if(count>1) d=0;
System.out.print(s+"\t");
if((s+d)%7==0)
{System.out.println();
count++;}
}
System.out.println();
}
}
public void getday()
{ int t=nian-2006;
n=t/4;
sum=(t-n)*365+n*366;
d=sum%7;
for(int i=1;i<d;i++)
System.out.print(" "+"\t");
}
}

2006-05-20 23:26
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
得分:0 
但好像打印出来的东西与实际不符呀!

2006-05-20 23:35
oujianqiang
Rank: 1
等 级:新手上路
帖 子:138
专家分:0
注 册:2006-5-16
得分:0 
我已经修改好了,谢谢你的帮助,下面是修改的代码,输出的结果正确的
import java.io.*;
public class getDataed
{
public static void main(String args[])throws IOException
{ int q;
String s=new String();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入2006或以后的年份");//2006年的元旦刚好是星期日
s=br.readLine();
q=Integer.parseInt(s);
Dataed dataed=new Dataed(q);
dataed.printyue();
}
}
class Dataed
{ private int nian,n,d,sum=0,k=0,r=1;
private int arr[]={31,28,31,30,31,30,31,31,30,31,30,31};
private String zhou[]={"日","一","二","三","四","五","六"};
public Dataed(int p)
{this.nian=p;}
public boolean istrue()
{ if(nian%4==0&&nian%100!=0||nian%100==0&&nian%400==0)
return true;
else return false;
}
public void printyue()
{ if(istrue()) arr[1]=29;
for(int i=0;i<arr.length;i++)
{ System.out.println((i+1)+"月");
for(int j=0;j<zhou.length;j++)
System.out.print(zhou[j]+"\t");
System.out.println();
int count=1;
for(int s=1;s<=arr[i];s++)
{ if(i!=0&(7-k)!=0&count==1&s==1)
{ for(int v=0;v<k;v++) System.out.print(" "+"\t");
}
if(r==1)
{ getday();
r++;
}
if(i==0&count>1) d=0;
System.out.print(s+"\t");
k+=1;
if((k+d)%7==0)
{System.out.println();
count++;
k=0;}
}
System.out.println();
}
}
public void getday()
{ int t=nian-2006;
n=t/4;
sum=(t-n)*365+n*366;
d=sum%7;
for(int i=0;i<d;i++)
System.out.print(" "+"\t");
}
}

[此贴子已经被作者于2006-5-22 7:43:25编辑过]


2006-05-21 10:45
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
得分:0 

------Java 爱好者,论坛小混混,学习中------
2006-05-21 10:51
abcefg
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-5-21
得分:0 

上楼这位大哥修改的程序我编译了之后还是有错嘛,怎么回事啊?

2006-05-21 21:03
oujianqiang
Rank: 1
等 级:新手上路
帖 子:138
专家分:0
注 册:2006-5-16
得分:0 
我刚才再编辑过一次了,这次没问题了,输出结果正确!

2006-05-21 22:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-65887-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.116286 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved