[lottery] 04_双色球选号(四)——底部导航文本处理

Android 4.0

双色球选号(四)——底部导航文本处理
核心代码:
// note*********************7、底部导航中间提示信息处理*********************
/**
 * 求一个数的阶乘
 * 
 * @param num
 *            待求的数
 * @return num的阶乘 num!
 */
// 注意:如果num过大,return值会超出范围,但这里对红色球做了限制,就不会有这个问题
public long factorial(int num) {
    LogUtil.i(TAG"num:" + num);
    if (num < 0) {
        throw new IllegalArgumentException("参数不对,num<0");
    } else if (num == 0 || num == 1) {
        return 1;
    }else {
        return num*factorial(num-1);
    }
}
/**
 * 获取总的球投注注数
 * 
 * @return
 */
public long countNoteBall() {
    long total = 0;
    
    if (listRedSelected != null && listBlueSelected != null) {
        if (listRedSelected.size() < 6) {// 不足一注
            return 0;
        }
        // 红色球个数
        long redBallCount = factorial(listRedSelected.size())
                / (factorial(6) * factorial(listRedSelected.size() - 6));
        LogUtil.i(TAG"redBallCount:" + redBallCount);
        // 蓝色球个数
        int blueBallCount = listBlueSelected.size();
        // 总注数
        total = redBallCount * blueBallCount;
        return total;
    }
    return -1;
}
/**
 * 底部导航提示信息
 */
public void changeBottomTip() {
    // tv_game_choose_notice_zl
    // 1、不足一注
    // 注数判断
    // 不足一注时,提示需要选择号码数量
    if (countNoteBall() <= 0) {
        // 1-1、红色球不够
        if (listRedSelected.size() < 6) {
            String notice = "还需要选择" + (6 - listRedSelected.size()) + "个红球";
            BottomNavigatorManager.getBottomNavigatorManagerInstance().changeGameBottomNotice(notice );
        } else if (listBlueSelected.size() < 1) {
            // 1-2、蓝色球不够
            String notice = "还需要选择" + 1 + "个蓝球";
            BottomNavigatorManager.getBottomNavigatorManagerInstance().changeGameBottomNotice(notice);
        }
    } else {
        // 2、大于一注
        String notice = countNoteBall() + "注" + countNoteBall() * 2 + "元";
        BottomNavigatorManager.getBottomNavigatorManagerInstance().changeGameBottomNotice(notice);
    }
}
结果: