qq_37940738 2017-06-04 07:17 采纳率: 0%
浏览 977

java写的 万年历(swing)为什么输出格式有问题

package cleader;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
class gui extends JFrame{
JLabel year,month;
JTextField years,months;
JTextArea receive;
JLabel [] label1=new JLabel[7];
JLabel [] label2=new JLabel[35];
JPanel aJPanel=new JPanel();
JPanel bJPanel=new JPanel();

JButton aButton;
monthday ss=new monthday();


gui(){
    this.setTitle("万年历");
    this.setBounds(50, 50, 800, 330);
    this.setLayout(null);
    this.add(bJPanel);
    this.add(aJPanel);
    init();
    this.setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){

    year=new JLabel("年份:");
    year.setBounds(25,5, 40, 30);
    month=new JLabel("月份:");
    month.setBounds(145,5, 40, 30);
    years=new JTextField();
    years.setBounds(60, 5, 70, 30);
    months=new JTextField();
    months.setBounds(180,5, 70, 30);
    aButton=new JButton("确定");
    aButton.setBounds(270, 5, 60, 30);
    bJPanel.setBounds(0, 0, 400, 37);
    bJPanel.setBackground(Color.blue);
    bJPanel.setLayout(null);
    bJPanel.add(year);
    bJPanel.add(years);
    bJPanel.add(months);
    bJPanel.add(month);
    bJPanel.add(aButton);

    receive=new JTextArea();
    receive.setBounds(0, 0, 800, 250);
    aJPanel.setBounds(0, 38, 800, 250);
    aJPanel.setBackground(Color.gray);
    aJPanel.setLayout(null);
    aJPanel.add(receive);



    //aJPanel.add(receive);
    aButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            receive.setText("");
            String string1=years.getText();
            String string2=months.getText();
            int a=Integer.parseInt(string1);
            int a2=Integer.parseInt(string2);
            int b=ss.manyYear(a, a2);
            int b2=ss.firstDays(ss.manyYear(a, b));
            int b3=ss.monthdays(a2,a);
            String [] log={"日","一","二","三","四","五","六"};
            for(int i=0;i<7;i++){
                if(i==6){
                    receive.append(log[i]);

                }
                else{
                    receive.append(log[i]+"\t");
                }
            }
            receive.append("\r\n");
            for (int k = 0; k < b2; k++) {
                receive.append("\t");
            }
            for (int m = 1; m <= b3; m++) {
                receive.append(m+"\t");

                if ((b + m) % 7 == 6) {

                    receive.append("\n");
                }
            }
        }


    });

}

}

package cleader;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class monthday {
public static void main(String[] args) {
new gui();
}
//判断第一天是周几
public int firstDays(int manyDays){
int firstDayOfMonth = 0;
int temp = 1 + manyDays % 7 ;
if(temp == 7){
return firstDayOfMonth = 0;

        }
    else{
        return firstDayOfMonth = temp;
        } 
}
//判断是否闰年
    public static boolean isrun(int year){
        if((year%4==0&&year%100!=0) || (year%400==0)){
            return true;
        }
        return false;
    }
    //判断给定年份与1900年1月的距离天数
    public int manyYear(int year,int month)
    {
        int flag=0;
        int monthdays=0;
        int manyYear=0;
        int manyMonth=0;
        int manyDays=0;
        for(int i=1900;i<year;i++){
            if(isrun(i)){
                manyYear=manyYear+366;
                }
            else{
                manyYear=manyYear+365;
            }
        }


        for(int i=1;i<=month;i++){
            switch(i){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                monthdays = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                monthdays = 30;
                break;
            case 2:
                if (isrun(year)) {
                    monthdays = 29;
                } else {
                    monthdays= 28;
                }
                break;
            default:
                System.out.println("輸入的年份不正確");
            }
                if(i < month){
                  manyMonth = manyMonth + monthdays;

                    }



        }
     return manyDays=manyYear+manyMonth;

    }


    //判断月份天数
    public int monthdays(int monthday,int year){
        int flag=0;
        int monthdays=0;
        switch(monthday){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:flag=1;
        break;
        case 4:
        case 6:
        case 9:
        case 11:flag=2;
        break;
        case 2:
            if(isrun(year)){
                flag=3;
            }
            else{
                flag=4; 
            }
        break;
        default:
            System.out.println("输入年份不正确");
        }
        if(flag==1){
            return monthdays=31;
        }
        else if(flag==2){
            return monthdays=30;
        }else if(flag==3){
            return monthdays=29;
        }else{
            return monthdays=28;
        }

    }

}

  • 写回答

1条回答 默认 最新

  • 嫣尘美 2017-06-12 08:07
    关注

    public static void main(String[] args) {
    int count1 = 0;
    int count2 = 0;

        Scanner sc = new Scanner(System.in); 
        System.out.println("*********************欢迎使用万年历*********************"); 
        System.out.print("请输入年份:"); 
        int year = sc.nextInt(); 
        System.out.print("请输入月份:"); 
        int mon = sc.nextInt(); 
        System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t"); 
        //计算这个月月初是该年的第sum天 
        int sum = 0; 
         switch(mon) 
         { 
          case 12: 
              sum += 30; 
          case 11: 
              sum += 31; 
          case 10: 
              sum += 30; 
          case 9: 
              sum += 31; 
          case 8: 
              sum+= 30; 
          case 7: 
              sum += 31; 
          case 6: 
              sum += 31; 
          case 5: 
              sum += 30; 
          case 4: 
              sum += 31; 
          case 3: 
              sum += 28; 
          case 2: 
              sum += 31; 
          case 1: 
              sum += 0; 
         } 
         if(year%400 == 0||year%4 == 0&&year%100 != 0){ 
             if(mon >2){ 
             sum += 1; 
             } 
         } 
         //计算距离1900年1月1日有几天 
         for(int i =1900;i < year;i++){ 
             //判断闰年和非闰年各有几年 
             if(i%400 == 0||i%4 == 0&&i%100 != 0){ 
                 count1++; 
             } 
             else 
                 count2++; 
         } 
         sum = sum + count1*366 + count2*365; 
         //计算所输入月份的第一天是星期几 
        int  week = (sum + 1)%7; 
        //打印 
        if(mon == 1||mon == 3||mon == 5||mon == 7||mon == 8||mon == 10||mon == 12){ 
    
            for( int j = 0;j < week;j++ ){ 
                System.out.print("\t"); 
    
            } 
            for(int day = 1;day <= 31;day++){                
                System.out.print(day + "\t"); 
                if((week + day) % 7 == 0) 
                { 
                    System.out.println(""); 
                } 
            } 
    
    
        } 
        if(mon == 4||mon == 6||mon == 9||mon == 11){ 
            for( int j = 0;j < week;j++ ){ 
                System.out.print("\t");                  
            } 
            for(int day = 1;day <= 30;day++){                
                System.out.print(day + "\t"); 
                if((week + day) % 7 == 0) 
                { 
                    System.out.println(""); 
                } 
            }            
        } 
        if(mon == 2){ 
            int k; 
            if(year%400 == 0||year%4 == 0&&year%100 != 0){ 
                k =1; 
            } 
            else k = 0; 
            for( int j = 0;j < week;j++ ){ 
                System.out.print("\t");                  
            } 
            for(int day = 1;day <= 28+k;day++){              
                System.out.print(day + "\t"); 
                if((week + day) % 7 == 0) 
                { 
                    System.out.println(""); 
                } 
            }            
        } 
    
    } 
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊