• 【Java】实现一个根据日期判断星座程序的编写


    思路

    直接根据月份做索引,然后根据日期边界判断是本月的星座还是上月的。

    算法

        private static String getAstro(int month, int day) {
        	String[] starArr = {"魔羯座","水瓶座", "双鱼座", "牡羊座", 
        		"金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座" };   
        	int[] DayArr = {22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22};  // 两个星座分割日
            int index = month;
            // 所查询日期在分割日之前,索引-1,否则不变
            if (day < DayArr[month - 1]) {
                    index = index - 1;
            }
            // 返回索引指向的星座string
            return starArr[index];
        }

    最终的效果图

    初始图:

    选择图:

    判断星座


    Java代码

    package com.test0803;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    /*
     *  
     * */
    class MyFrameee extends JFrame implements ItemListener {
    
    	private JComboBox day = new JComboBox(), month = new JComboBox();
    	private JLabel tip = new JLabel("请选择日期");
    	public static final String[] starArr = {"魔羯座","水瓶座", "双鱼座", "牡羊座", 
    		"金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座" };   
    	public static final int[] DayArr = {22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22};   
    
    	MyFrameee() {
    		super("星座计算");
    		for (int i = 1; i <= 12; i++) {
    			//void addItem(Object anObject)  为项列表添加项。
    			month.addItem(String.valueOf(i));
    		}
    		for (int i = 1; i <= 31; i++) {
    			day.addItem(String.valueOf(i));
    		}
    		//setForeground:设置此组件的前景色。
    		tip.setForeground(Color.blue);
    
    		Container con = getContentPane();
    		con.setLayout(new FlowLayout());
    		con.add(month);
    		con.add(new JLabel("月-"));
    		con.add(day);
    		con.add(new JLabel("日"));
    		con.add(tip);
    		day.addItemListener(this);
    		month.addItemListener(this);
    		setSize(280, 100);
    		setLocation(400, 300);
    		setVisible(true);
    		setResizable(false);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    
    	public static String getConstellation(Calendar time) {   
    	    int month = time.get(Calendar.MONTH);   
    	    int day = time.get(Calendar.DAY_OF_MONTH);   
    	    if (day < DayArr[month]) {   
    	        month = month - 1;   
    	    }   
    	    if (month >= 0) {   
    	        return starArr[month];   
    	    }   
    	    return starArr[0];   
    	}  
    
    	public void itemStateChanged(ItemEvent e) {
    		Calendar date = Calendar.getInstance();
    		date.set(2010, Integer.parseInt((String) month.getSelectedItem()),
    				Integer.parseInt((String) day.getSelectedItem()));
    		tip.setText(getConstellation(date));
    	}
    }
    
    public class Test_Star2 {
    	public static void main(String[] args) {
    		new MyFrameee();
    	}
    }

    不足之处

    为了方便,没有确定特殊月份的日期数量,都是按照31天处理的。
  • 相关阅读:
    pom
    Java API操作Hadoop可能会遇到的问题以及解决办法
    hadoop在windows上的配置文件
    UNC路径
    spark在windows的配置
    Oracle系统表整理+常用SQL语句收集(转载)
    sbt配置文件
    (转)Flink简介
    spark osx:WARN NativeCodeLoader:62
    试图加载格式不正确的程序。 (异常来自HRESULT:0x8007000B)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3241102.html
Copyright © 2020-2023  润新知