回 帖 发 新 帖 刷新版面

主题:大家帮忙看下,给我最后点希望把

日期的输出上老是和上面的星期对不上,帮忙改下

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);
 }
}

回复列表 (共1个回复)

沙发

你的排序逻辑没有问题
JOptionPane.showMessageDialog(null,output,"统计数字",JOptionPane.INFORMATION_MESSAGE);
显示不了\t,你要用别的方法代替,比如直接用空格,但要吧0-9和10以后的区分开。
建议不用用心去钻研Applet,这东西过时很久了。只要不是必须要用,sun遗弃的东西就不必认真了。
还是先明确学java的目的吧,如果只是做web的应用,javascript和界面的重要性加起来,甚至可以和java本身相比。
所以明确学习目的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册