• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 生日星座自动匹配,生日星座匹配

生日星座自动匹配,生日星座匹配

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了生日礼物男朋友星座,星座生日花语大全,十二星座的生日花,生日星座查询,星座生日等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

生日星座自动匹配,生日星座匹配


2017/3/4,周六

最近项目中做个人信息设置模块,遇到了一个生日星座自动匹配问题,于是百度、Google了一翻,网上的大部分答案都是这样的:

  //星座分割时间
    int[] date = {20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22};

    String[][] constellations = {{"摩羯座", "水瓶座"}, {"水瓶座", "双鱼座"}, {"双鱼座", "白羊座"}, {"白羊座", "金牛座"}, {"金牛座", "双子座"}, {"双子座", "巨蟹座"}, {"巨蟹座", "狮子座"}, {"狮子座", "处女座"}, {"处女座", "天秤座"}, {"天秤座", "天蝎座"}, {"天蝎座", "射手座"}, {"射手座", "摩羯座"}};

    //星座生成 传进是日期格式为: yyyy-mm-dd
    public void setConstellations(String birthday) {
        String[] data = birthday.split("-");
        int day = date[Integer.parseInt(data[1]) - 1];
        String[] cl1 = constellations[Integer.parseInt(data[1]) - 1];
        if (Integer.parseInt(data[2]) >= day) {
            tvUserDetailAstrology.setText(cl1[1]);
        } else {
            tvUserDetailAstrology.setText(cl1[0]);
        }
    }

将每个月份对应的星座存入一个二维数组中,然后根据日来判断是属于哪个星座。这是最常见的一种实现方式了,用的也比较普遍。

但对于Android开发,又有代码洁癖的我们来说肯定是会想进一切办法不让汉字出现在代码中的,所以我们可以这样:

  private static String[] astrologyArray;
    private static String[][] constellations = new String[12][2];
    static {
        astrologyArray = AppContext.getInstance().getResources().getStringArray(R.array.astrology_array);
        for (int i = 0; i < constellations.length; i++) {
            int k = i;
            for (int j = 0; j < constellations[i].length; j++) {
                constellations[i][j] = astrologyArray[k];
                k += 1;
            }
        }
    }

string文件中:

 <string-array name="astrology_array">
        <item>魔羯座</item>
        <item>水瓶座</item>
        <item>双鱼座</item>
        <item>白羊座</item>
        <item>金牛座</item>
        <item>双子座</item>
        <item>巨蟹座</item>
        <item>狮子座</item>
        <item>处女座</item>
        <item>天秤座</item>
        <item>天蝎座</item>
        <item>射手座</item>
        <item>魔羯座</item>
 </string-array>

虽然代码多了那么一丢丢,但是还是值得的!

这样我们的思路还是和以前一样,只是将那个二维数组重新获取了而已,看着顺眼了好多!

可仔细观察下星座这个一维数组和二维数组后,我们发现其实他们都是相邻的,这个二维数组会不会有点多余了呢?对,你没看错,它就是个小三!

 //为了便于查看先写这儿啦,代码中肯定是要写到string里面的,没有理由~
    private static String[] astrologyArray = {"魔羯座, 水瓶座, 双鱼座, 白羊座, 金牛座, 双子座, 巨蟹座, 狮子座, 处女座, 天秤座, 天蝎座, 射手座, 魔羯座"};
    //星座分割时间
    int[] date = {20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22};

    //星座生成 传进是日期格式为: yyyy-mm-dd
    public void setConstellations(String birthday) {
        String[] data = birthday.split("-");
        int month = Integer.parseInt(data[1]);
        int compareDay = date[month - 1];
        // 所查询日期在分割日之前,索引-1,否则不变
        if (Integer.parseInt(data[2]) >= compareDay) {
            tvUserDetailAstrology.setText(astrologyArray[month]);
        } else {
            tvUserDetailAstrology.setText(astrologyArray[month - 1]);
        }
    }

这样我们就只需要这一个星座的一维数组就能准确的找到该日期所对应的星座啦!

由于本人水平有限,文中如有错误欢迎批评指正,小弟感激不尽!

最后,感谢兔子家的三哥(http://www.jianshu.com/u/87ae381f8e5b)对我工作的帮助和指导,谢谢!

本文GiutHub上Demo地址:https://github.com/IT-Talon/ConstellationSelect,如果对您的学习有点帮助,希望点个star, 谢谢!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 生日星座自动匹配,生日星座匹配

相关文章

  • 2017-05-26Android 手机卫士--自定义属性,android卫士
  • 2017-05-26AndroidStudio怎样导入jar包,androidstudiojar
  • 2017-05-26Activity的生命周期,Activity生命周期
  • 2017-05-26记一次Android系统下解决音频UnderRun问题的过程
  • 2017-05-26AndroidStudio下使用 RecyclerView xml文件不显示预览条目并报错类似:NoClassDefFoundError 问题解决,studiorecyclerview
  • 2017-10-21使用AndroidStudio建立简单的单元测试
  • 2017-05-26LoaderManager与CursorLoader用法,cursorloader
  • 2017-05-26EventBus的使用,EventBus使用
  • 2017-05-26Android—Service与Activity的交互,androidactivity
  • 2017-05-26Eclipse迁移到Android studio步骤如下:,eclipseandroid

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android中MotionEvent的来源和ViewRootImpl
    • Android焦点事件分发与传递机制
    • android中生成excel
    • Android中ListView实现图文并列并且自定义分割线(完善仿微信APP),androidlistview
    • 手势检测GestureDetector,gesturedetector
    • 客户端和服务端如何使用Token和Session,tokensession
    • viewPager+fragment如何刷新缓存fragment,viewpagerfragment
    • android组合控件Titlebar的定制过程
    • Android的Message Pool是什么——源码角度分析,androidpool
    • android 公司app升级UI总结分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有