当前位置: 代码迷 >> Java相关 >> 年历打印问题
  详细解决方案

年历打印问题

热度:335   发布时间:2006-05-20 22:53:00.0
年历打印问题

我的思路是输入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  

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
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");
}
}
----------------解决方案--------------------------------------------------------
但好像打印出来的东西与实际不符呀!
----------------解决方案--------------------------------------------------------
我已经修改好了,谢谢你的帮助,下面是修改的代码,输出的结果正确的
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编辑过]


----------------解决方案--------------------------------------------------------
看看这个贴 http://www.bc-cn.net/bbs/dispbbs.asp?boardID=8&ID=62162&page=5
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
我刚才再编辑过一次了,这次没问题了,输出结果正确!
----------------解决方案--------------------------------------------------------
  相关解决方案