主题:大家帮忙看下,给我最后点希望把
日期的输出上老是和上面的星期对不上,帮忙改下
import java.util.Scanner;
import javax.swing.JOptionPane;
public class d{
public static void main(String[]args){
Scanner input=new Scanner(System.in);
int year,mouth,day,week;
int days=0,dayY_M=0;
String yearstring=JOptionPane.showInputDialog(null,
"输入年","*******************欢迎使用万年历*******************",
JOptionPane.QUESTION_MESSAGE);
year=Integer.parseInt(yearstring);
String mouthstring=JOptionPane.showInputDialog(null,
"输入月","*******************欢迎使用万年历*******************",
JOptionPane.QUESTION_MESSAGE);
mouth=Integer.parseInt(mouthstring);
while(mouth<1||mouth>12){
System.out.println("月份输入错误,请重新输入:");
mouth=input.nextInt();
}
switch(mouth){ //判断输入月份有多少天
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
default:
if(year%400==0||(year%4==0&&year%100!=0)){
day=29;
break;
}else{
day=28;
break;
}
}
for(int i=1900;i<year;i++){ //累加从1900年到输入年份的1月1日前一日共多少天
if(i%400==0||(i%4==0&&i%100!=0)){
days=days+366;
}else{
days=days+365;
}
}
for(int j=1;j<mouth;j++){ //累计从输入年份1月1日至输入月份1月1日前一日共多少天
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){
dayY_M=dayY_M+31;
}else if(j==4||j==6||j==9||j==11){
dayY_M=dayY_M+30;
}else if(year%400==0||(year%4==0&&year%100!=0)){ //闰年2月为29天
dayY_M=dayY_M+29;
}else{ //平年2月为28天
dayY_M=dayY_M+28;
}
}
days=days+dayY_M; //计算从1900年1月1日至输入月份1日的前一日共多少天
week=(days+1)%7; //计算输入月份第一天为一星期的第几天
String output="\n星期日 \t星期一 \t星期二 \t星期三 \t星期四 \t星期五 \t星期六 \n";
for(int k=0;k<week;k++){ //确定输入月1日前有几个空日,week的值为当月1日的星期数,故不用等于
output+="\t";
}
for(int l=1;l<=day;l++){
if((l+week)%7==0){ //l为日期数,l+week为从第一行第一天算起,即从当月日历中第一个星期日算起
output+=l+"\n"; //从周日开始计算到周六为7天,故当月天数加初始空格数的和逢7断行
}else{
output+=l+"\t";
}
}JOptionPane.showMessageDialog(null,output,"统计数字",JOptionPane.INFORMATION_MESSAGE);
}
}
import java.util.Scanner;
import javax.swing.JOptionPane;
public class d{
public static void main(String[]args){
Scanner input=new Scanner(System.in);
int year,mouth,day,week;
int days=0,dayY_M=0;
String yearstring=JOptionPane.showInputDialog(null,
"输入年","*******************欢迎使用万年历*******************",
JOptionPane.QUESTION_MESSAGE);
year=Integer.parseInt(yearstring);
String mouthstring=JOptionPane.showInputDialog(null,
"输入月","*******************欢迎使用万年历*******************",
JOptionPane.QUESTION_MESSAGE);
mouth=Integer.parseInt(mouthstring);
while(mouth<1||mouth>12){
System.out.println("月份输入错误,请重新输入:");
mouth=input.nextInt();
}
switch(mouth){ //判断输入月份有多少天
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
default:
if(year%400==0||(year%4==0&&year%100!=0)){
day=29;
break;
}else{
day=28;
break;
}
}
for(int i=1900;i<year;i++){ //累加从1900年到输入年份的1月1日前一日共多少天
if(i%400==0||(i%4==0&&i%100!=0)){
days=days+366;
}else{
days=days+365;
}
}
for(int j=1;j<mouth;j++){ //累计从输入年份1月1日至输入月份1月1日前一日共多少天
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){
dayY_M=dayY_M+31;
}else if(j==4||j==6||j==9||j==11){
dayY_M=dayY_M+30;
}else if(year%400==0||(year%4==0&&year%100!=0)){ //闰年2月为29天
dayY_M=dayY_M+29;
}else{ //平年2月为28天
dayY_M=dayY_M+28;
}
}
days=days+dayY_M; //计算从1900年1月1日至输入月份1日的前一日共多少天
week=(days+1)%7; //计算输入月份第一天为一星期的第几天
String output="\n星期日 \t星期一 \t星期二 \t星期三 \t星期四 \t星期五 \t星期六 \n";
for(int k=0;k<week;k++){ //确定输入月1日前有几个空日,week的值为当月1日的星期数,故不用等于
output+="\t";
}
for(int l=1;l<=day;l++){
if((l+week)%7==0){ //l为日期数,l+week为从第一行第一天算起,即从当月日历中第一个星期日算起
output+=l+"\n"; //从周日开始计算到周六为7天,故当月天数加初始空格数的和逢7断行
}else{
output+=l+"\t";
}
}JOptionPane.showMessageDialog(null,output,"统计数字",JOptionPane.INFORMATION_MESSAGE);
}
}