【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();
}
}
不足之处
【Java】实现一个根据日期判断星座程序的编写的更多相关文章
- 分享一个根据具体的日期判断星座的PHP函数
其实原理很简单,也就是把所有的星座月份日期范围存储到一个数组中,然后根据日期判断属于哪个范围,这样就得到是哪个星座了. 下面的这个函数写的比较精炼,可以参考一下 function constellat ...
- 利用java开发一个双击执行的小程序
之前我们利用java写了很多东西,但是好像都没有什么实际意义. 因为有意义桌面小程序怎么都得有个界面,可是界面又不太好搞.或者 了解到这一层的人就少之又少了. 呀,是不是还得开辟一些版面来介绍awt和 ...
- java实现一个简单的爬虫小程序
前言 前些天无意间在百度搜索了一下以前写过的博客 我啥时候在这么多不知名的网站上发表博客了???点进去一看, 内容一模一样,作者却不是我... 然后又去搜了其他篇博客,果然,基本上每篇都在别的网站上有 ...
- JAVA 写一个方法,判断一个整数是否为素数
1 import java.util.Scanner; 2 3 public class Question3 { 4 public static void main(String[] args) { ...
- 为什么用 Java:一个 Python 程序员告诉你
这篇文章专门给程序员写的,普通读者慎入.原作者:Kevin Sookocheff 译者:Celia Zhen,原文点击文末链接. 每当我告诉别人我一直在用Java工作时,大家的反应都是: “纳尼!Ja ...
- Android(java)学习笔记219:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
- 五:用JAVA写一个阿里云VPC Open API调用程序
用JAVA写一个阿里云VPC Open API调用程序 摘要:用JAVA拼出来Open API的URL 引言 VPC提供了丰富的API接口,让网络工程是可以通过API调用的方式管理网络资源.用程序和软 ...
- Java基础:一个100%会发生死锁的程序
多线程是Java工程师进阶所必须掌握的一项技能,也是面试中绕不过的一个环节,而死锁又是多线程同步失败的经典案例,对于复杂的系统,死锁是很难通过代码层面来做静态检测和排查的,所以有的面试官会从反 ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
随机推荐
- ID设计
ID设计 在分布式系统中,经常需要使用全局唯一ID查找对应的数据.产生这种ID需要保证系统全局唯一,而且要高性能以及占用相对较少的空间. 全局唯一ID在数据库中一般会被设成主键,这样为了保证数据插入时 ...
- discuz 插件开发 新手入门
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...
- 消息队列(Message Queue)基本概念(转)
背景 之前做日志收集模块时,用到flume.另外也有的方案,集成kafaka来提升系统可扩展性,其中涉及到消息队列当时自己并不清楚为什么要使用消息队列.而在我自己提出的原始日志采集方案中不适用消息队列 ...
- Broadcast Receiver注意事项
静态登记 <receiver android:name=".MyReceiver" android:enabled="true"> <inte ...
- Hive综合HBase——经Hive阅读/书写 HBase桌子
社论: 本文将Hive与HBase整合在一起,使Hive能够读取HBase中的数据,让Hadoop生态系统中最为经常使用的两大框架互相结合.相得益彰. watermark/2/text/aHR0cDo ...
- ACdream: Sum
Sum Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisticN ...
- mysql替换字段里数据内容部分字符串(亦可用于增加字段中的内容)
mysql替换表的字段里面内容,如例子: mysql> select host,user from user where user='testuser'; +----------------- ...
- 全面认识Eclipse中JVM内存设置(转)
这里向大家描述一下Eclipse中如何进行JVM内存设置,JVM主要管理两种类型的内存:堆和非堆.简单来说堆就是Java代码可及的内存,是留给开发人员使用的:非堆就是JVM留给自己用的,所以方法区.J ...
- Java EE (8) -- Java EE Patterns
Java EE 模式目录由以下三个层组成: – 整合层(4) – 业务层(9) – 表示层(8) 涉及 Java EE 平台代码与其它类型应用程序或遗留系统的集成: 服务激活器 ...
- [HDU 1427]速度计算24点(DFS暴力搜索)
主题连接: pid=1427">http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表 ...