java 中的一个实现输入年份和月份 显示日历的程序请问那里错了?

importjava.util.*;publicclassvb{publicstaticvoidmain(String[]args){Scannersc=newScann... import java.util.*;
public class vb{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入年份");
int yyy=sc.nextInt();
System.out.println("请输入月份");
int mmm=sc.nextInt();
boolean run=((yyy%4==0 && yyy%100!=0)||(yyy%400==0));
//System.out.print(run);
int days=0; int yeardays=0; int sumdays=0;
for(int i=1900;i<yyy;i++){ //计算到输入年份的天数
if((i%4==0 && i%100!=0)||(i%400==0)){
yeardays+=366;
}else{
yeardays+=365;
}
}
for(int i=1;i<mmm;i++){ //计算到输入月份的天数
switch(mmm){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days+=31;
break;
case 2:
if(run){
days+=29;
}else{
days+=28;
}break;
default:
days+=30;
break;
}
}
System.out.println("\n\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
sumdays=days+yeardays;
System.out.println(sumdays);
int zhe=(sumdays%7);
System.out.println(zhe);
//if(zhe==7)zhe=0;
for(int z=1;i<zhe;z++){
System.out.print("*\t");
}
for(int i=0;i<=mmm;i++){
switch(mmm){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if(run){
days=29;
}else{
days=28;
}break;
default:
days=30;

}
}
for(int i=1,k=0;i<=days;k++,i++){
System.out.print(i+"\t");
if((k+zhe)==8){
System.out.println();
k=0;
}
}

}
}
展开
 我来答
匿名用户
2014-11-21
展开全部


修改了。但没有修改逻辑,有一个疑问:一定1日就是周日的吗。

更多追问追答
追问
就是这里错了
那个z本来是i的
单纯的看_看
2014-11-21 · 超过69用户采纳过TA的回答
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:71.4万
展开全部
for(int z=1;i<zhe;z++){
System.out.print("*\t");
}
这里错了 你没发现复制进去就报错了么
是int z=1;z<zhe
追问
额,那个本来是i的 我想问的是它为什么排版和实际不同步  那里错了
最后一for是控制排版的   zhe是控制 开始空 格
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友46f83e3
2014-11-21 · 超过34用户采纳过TA的回答
知道答主
回答量:106
采纳率:50%
帮助的人:47万
展开全部
import java.util.Scanner;
public class vb {
@SuppressWarnings("resource")
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入年份");
int yyy=sc.nextInt();
System.out.println("请输入月份");
int mmm=sc.nextInt();
boolean run=((yyy%4==0 && yyy%100!=0)||(yyy%400==0));
//System.out.print(run);
int days=0;
int yeardays=0;
int sumdays=0;
for(int i=1900;i<yyy;i++){ //计算到输入年份的天数
if((i%4==0 && i%100!=0)||(i%400==0)){
yeardays+=366;
}else{
yeardays+=365;
}
}
for(int i=1;i<mmm;i++){ //计算到输入月份的天数
switch(mmm){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days+=31;
break;
case 2:
if(run){
days+=29;
}else{
days+=28;
}break;
default:
days+=30;
break;
}
}
for(int z=1;z<mmm;z++){
System.out.print("*\t");
}
for(int i=0;i<=mmm;i++){
switch(mmm){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if(run){
days=29;
}else{
days=28;
}break;
default:
days=30;

}
}
for(int i=1,k=0;i<=days;k++,i++){
System.out.print(i+"\t");
if((k+days)==8){
System.out.println();
k=0;
}

}
System.out.println("\n\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
sumdays=days+yeardays;
System.out.println(sumdays);
int zhe=(sumdays%7);
System.out.println(zhe);
//if(zhe==7)zhe=0;

}
}
(代码改的没错了,但是功能不知道你要做什么,写得太乱了,不爱看了,我想应该是在屏幕上输入一个年份,先看是不是瑞年,然后判断一下他是星期几吧)
更多追问追答
追问
功能是 要查到某月的 日历
追答
import java.util.Scanner;

public class TestYear{
//计算闰年
public TestYear( int day){
if(day%4==0){
System.out.println(day+"为闰年"+"\t");
day=366;
System.out.println("闰年全年天数为"+day+"\t");
}else{
System.out.println(day+"不是闰年"+"\t");
day=365;
System.out.println("全年天数为"+day+"\t");
}
}
public TestYear(int year, int month ){
//计算月份天数
if(year!=0&&month==1||month==5||month==7||month==8||month==10||month==12){
System.out.println("这个月天数为31"+"\t");
}
else if(year!=0&&month==3||month==4||month==6||month==9||month==11){
System.out.println("这个月天数为30"+"\t");
}
else if( year%4==0&&month==2 ) {
System.out.println("这个月天数为28"+"\t");
}
else if( year%4!=0&&month==2 ){
System.out.println("这个月天数为29"+"\t");
}
else{
System.out.println("请输入正确的形式");
}
}
(超限了,后面代码。。。)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式