`
luckaway
  • 浏览: 137771 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

生日转星座的java代码(附单元测试)

阅读更多
星座的枚举类
ConstellationUtil .java
public class ConstellationUtil {

	public enum Constellation {
		Capricorn(1, "摩羯座"), Aquarius(2, "水瓶座"), Pisces(3, "双鱼座"), Aries(4, "白羊座"), Taurus(5, "金牛座"), Gemini(6, "双子座"), Cancer(
				7, "巨蟹座"), Leo(8, "狮子座"), Virgo(9, "处女座"), Libra(10, "天秤座"), Scorpio(11, "天蝎座"), Sagittarius(12, "射手座");

		private int code;
		private String chineseName;

		private Constellation(int code, String chineseName) {
			this.code = code;
			this.chineseName = chineseName;
		}

		public int getCode() {
			return this.code;
		}

		public String getChineseName() {
			return this.chineseName;
		}
	}

	public static final Constellation[] constellationArr = { Constellation.Aquarius, Constellation.Pisces,
			Constellation.Aries, Constellation.Taurus, Constellation.Gemini, Constellation.Cancer, Constellation.Leo,
			Constellation.Virgo, Constellation.Libra, Constellation.Scorpio, Constellation.Sagittarius,
			Constellation.Capricorn };

	public static final int[] constellationEdgeDay = { 21, 20, 21, 21, 22, 22, 23, 24, 24, 24, 23, 22 };

	public static int calculateConstellation(String birthday) {
		if (birthday == null || birthday.trim().length() == 0)
			throw new IllegalArgumentException("the birthday can not be null");
		String[] birthdayElements = birthday.split("-");
		if (birthdayElements.length != 3)
			throw new IllegalArgumentException("the birthday form is not invalid");
		int month = Integer.parseInt(birthdayElements[1]);
		int day = Integer.parseInt(birthdayElements[2]);
		if (month == 0 || day == 0 || month > 12)
			return 0;
		month = day < constellationEdgeDay[month - 1] ? month - 1 : month;
		return month > 0 ? constellationArr[month - 1].getCode() : constellationArr[11].getCode();
	}
}


测试ConstellationUtil 单元测试


public class TestConstellationUtil extends BaseTestCase {

	protected void setUp() throws Exception {
		super.setUp();
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

	public void testCalculateConstellation() {
		assertEquals(Constellation.Capricorn.getCode(), ConstellationUtil.calculateConstellation("1986-12-22"));
		assertEquals(Constellation.Capricorn.getCode(), ConstellationUtil.calculateConstellation("1986-12-25"));
		assertEquals(Constellation.Capricorn.getCode(), ConstellationUtil.calculateConstellation("1986-01-20"));

		assertEquals(Constellation.Aquarius.getCode(), ConstellationUtil.calculateConstellation("1986-01-21"));
		assertEquals(Constellation.Aquarius.getCode(), ConstellationUtil.calculateConstellation("1986-02-18"));
		assertEquals(Constellation.Aquarius.getCode(), ConstellationUtil.calculateConstellation("1986-02-19"));

		assertEquals(Constellation.Pisces.getCode(), ConstellationUtil.calculateConstellation("1986-02-20"));
		assertEquals(Constellation.Pisces.getCode(), ConstellationUtil.calculateConstellation("1986-02-26"));
		assertEquals(Constellation.Pisces.getCode(), ConstellationUtil.calculateConstellation("1986-03-20"));

		assertEquals(Constellation.Aries.getCode(), ConstellationUtil.calculateConstellation("1986-03-21"));
		assertEquals(Constellation.Aries.getCode(), ConstellationUtil.calculateConstellation("1986-03-25"));
		assertEquals(Constellation.Aries.getCode(), ConstellationUtil.calculateConstellation("1986-04-20"));

		assertEquals(Constellation.Taurus.getCode(), ConstellationUtil.calculateConstellation("1986-04-21"));
		assertEquals(Constellation.Taurus.getCode(), ConstellationUtil.calculateConstellation("1986-05-10"));
		assertEquals(Constellation.Taurus.getCode(), ConstellationUtil.calculateConstellation("1986-05-21"));

		assertEquals(Constellation.Gemini.getCode(), ConstellationUtil.calculateConstellation("1986-05-22"));
		assertEquals(Constellation.Gemini.getCode(), ConstellationUtil.calculateConstellation("1986-05-25"));
		assertEquals(Constellation.Gemini.getCode(), ConstellationUtil.calculateConstellation("1986-06-21"));

		assertEquals(Constellation.Cancer.getCode(), ConstellationUtil.calculateConstellation("1986-06-22"));
		assertEquals(Constellation.Cancer.getCode(), ConstellationUtil.calculateConstellation("1986-06-28"));
		assertEquals(Constellation.Cancer.getCode(), ConstellationUtil.calculateConstellation("1986-07-22"));

		assertEquals(Constellation.Leo.getCode(), ConstellationUtil.calculateConstellation("1986-07-23"));
		assertEquals(Constellation.Leo.getCode(), ConstellationUtil.calculateConstellation("1986-07-30"));
		assertEquals(Constellation.Leo.getCode(), ConstellationUtil.calculateConstellation("1986-08-23"));

		assertEquals(Constellation.Virgo.getCode(), ConstellationUtil.calculateConstellation("1986-08-24"));
		assertEquals(Constellation.Virgo.getCode(), ConstellationUtil.calculateConstellation("1986-09-21"));
		assertEquals(Constellation.Virgo.getCode(), ConstellationUtil.calculateConstellation("1986-09-23"));

		assertEquals(Constellation.Libra.getCode(), ConstellationUtil.calculateConstellation("1986-09-24"));
		assertEquals(Constellation.Libra.getCode(), ConstellationUtil.calculateConstellation("1986-10-21"));
		assertEquals(Constellation.Libra.getCode(), ConstellationUtil.calculateConstellation("1986-10-23"));

		assertEquals(Constellation.Scorpio.getCode(), ConstellationUtil.calculateConstellation("1986-10-24"));
		assertEquals(Constellation.Scorpio.getCode(), ConstellationUtil.calculateConstellation("1986-11-21"));
		assertEquals(Constellation.Scorpio.getCode(), ConstellationUtil.calculateConstellation("1986-11-22"));

		assertEquals(Constellation.Sagittarius.getCode(), ConstellationUtil.calculateConstellation("1986-11-23"));
		assertEquals(Constellation.Sagittarius.getCode(), ConstellationUtil.calculateConstellation("1986-11-28"));
		assertEquals(Constellation.Sagittarius.getCode(), ConstellationUtil.calculateConstellation("1986-12-21"));
	}
}

分享到:
评论
3 楼 luckaway 2011-01-05  
我已经改回来了!
2 楼 luckaway 2011-01-05  
飞天奔月 写道
ParamInvalidException 是自定义的异常?

是自定义的,正确的做法,应该用JDK的标准异常--IllegalArgumentException
1 楼 飞天奔月 2011-01-05  
ParamInvalidException 是自定义的异常?

相关推荐

    十二生肖和星座Java工具类.rar

    在这个"十二生肖和星座Java工具类"中,我们可以假设作者创建了一个Java类,该类提供了与计算和处理十二生肖以及星座相关的功能。下面将详细解释这些知识点。 首先,我们需要理解十二生肖和星座的概念。十二生肖,...

    Java编程星座配对

    在本项目中,“Java编程星座配对”是一个有趣的话题,它结合了计算机编程与星座文化,为用户提供了一种新颖的互动体验。通过编程实现星座配对功能,我们可以深入理解Java语言的一些关键概念和技术,同时也涉及到了...

    安卓程序设计星座查询代码

    同时,编写单元测试和集成测试可以确保代码的稳定性和准确性。 10. **发布准备**:最后,应用需要打包成APK文件以便在Android设备上安装和运行。在发布前,需要考虑应用图标、版本信息、权限声明以及Google Play ...

    java毕业设计之星座小程序源码.zip

    星座小程序通常包括用户输入生日,程序自动识别并返回对应的星座信息,可能还会包含一些星座运势、星座配对等趣味功能。实现这个功能,开发者需要掌握基础的Java编程,包括数据类型、控制结构、类与对象等。此外,...

    android根据你出生的阳历日期可以判断你属于哪个星座程序

    8. **测试**:为了确保程序的正确性,你需要进行各种测试,包括单元测试和集成测试。可以使用Android Studio内置的 Espresso 测试框架进行UI测试。 9. **权限请求**:如果应用需要访问用户的日期,可能需要请求`...

    java 人品计算器

    9. **测试与调试**:为了确保人品计算器的正确性,需要编写测试用例,通过`JUnit`等单元测试框架进行测试,确保在各种输入条件下都能得到预期的结果。 尽管“人品计算器”没有科学依据,但它的实现过程涵盖了Java...

    星座情缘(android软件)

    1. 星座查询:用户可以根据生日查询对应的星座信息,这需要对星座知识有一定的理解,并在后台存储相应的星座数据。 2. 星座运势:提供每日、每周或每月的星座运势预测,这部分可能需要集成外部API来获取数据。 3. ...

    基于Android平台的星座查询软件设计.doc

    - **Java**:Android应用主要使用Java语言编写,Java的面向对象特性使得代码结构清晰,易于维护。 - **星座查询**:软件的核心功能,允许用户输入生日以查询对应星座并查看相关资讯。 - **Intent**:Android中用于...

    缘分测试小软件

    开发者需要设计一种算法,它可以基于用户的输入(如生日、星座、姓名等)生成测试结果。这些算法可以是随机的,也可以是基于某些统计或占星学原理的。关键是要让用户感觉结果既有趣又神秘。 3. **数据处理**:如果...

    缘分 测试器 测试两人有没有缘分的软件

    在IT行业中,这样的软件通常基于一定的算法模型,可能涉及姓名学、星座、生日、兴趣爱好等多种因素,通过计算这些因素的匹配度来模拟出一个“缘分值”。虽然这种测试并不具备科学严谨性,但它利用了人们对于未知的...

    多用户性格性命测试测试版.rar

    3. **命测试**:在IT上下文中,命测试可能指的是根据用户的个人信息(如生日、星座等)提供某种形式的命运预测或解析。这可能涉及到算法或数据库,用于匹配和分析数据。 4. **测试版**:测试版软件是开发者在正式...

    J2ME的星座程序(含文檔).zip_j2me

    **xingzuo**可能是一个包含星座程序实际代码的文件或者目录,比如Java源代码文件(.java)、配置文件(.config)、资源文件(如图片、音频)等。通过查看这部分内容,开发者可以深入到具体的编程实践中,学习如何在...

    合婚程序测试版

    为了确保程序的安全性和稳定性,开发者还需要对PHP源码进行充分的测试,包括单元测试、集成测试和系统测试,确保各个模块和整体流程的正确性。同时,对于用户数据的处理,需要遵循隐私保护原则,确保信息安全。 总...

    缘分测试

    7. **程序打包与发布**:"缘分.EXE"表明这是一个已经编译打包的Windows可执行文件,可能是使用编程语言如C#、Java或Visual Basic开发的,并通过编译器将源代码转化为可以直接运行的二进制文件。 总的来说,"缘分...

    Exp3_Z09418138.rar

    用户输入的阳历生日需要被解析为日期对象,这需要用到Java或Kotlin的日期时间类,如`java.util.Date`或`java.time.LocalDate`。然后,根据日期范围,开发者需要编写逻辑来判断所属的星座。这可能涉及到条件语句或...

    Fortune-Telling

    【标题】:“Fortune-Telling”是一款基于Java技术开发的星座运势预测应用程序,它为用户提供了一个全新的生日到星座占卜的体验。 【描述】:在当今科技与传统文化交融的时代,这款“Fortune-Telling”应用将传统的...

    [工具查询]小蜜蜂爱情缘分预测系统 V1.0_aqyf.zip

    姓名可能被用于生成所谓的“姓名缘分”,而生日则可能用于星座配对或者生辰八字的分析。在传统命理学中,生辰八字被认为可以揭示一个人的命运轨迹,而星座则常用于西方的性格分析。通过将这些元素与特定算法相结合,...

Global site tag (gtag.js) - Google Analytics