作业帮 > 综合 > 作业

用java实现switch报数游戏

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 01:24:51
用java实现switch报数游戏
a,b,c,d,e,f,g,h,共八人站成一排,按图示方法从1开始报数,求谁先报到8411250
八个人报数,从a开始,每报14个数,便又回到A,形成14个数为一个周期的重复。
/**
 * 根据题目的提示:“从a开始,每报14个数,便又回到A”, 那么报数的顺序是:先是a-h,然后再h-a --------“abcdefghgfedcba”
 * 
 * @author Kong
 * 
 */
public class SwitchGame {
    private static int num = 0;
    private static final int PLUS = 0;// 正数标记
    private static final int MINUS = 1;// 负数标记
    public static void main(String[] args) {
        char[] arr = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };// 数组;
        int target = 8411250;// 目标数字;
        int i = 0;// 开始索引值0就是'a';
        int flag = PLUS;// 一个标记,用于确定遍历数组的方向;
        while (num < target) {// 当报的数小于目标数时执行;
            number(arr[i]);// 报数方法;
            if (i == arr.length-1) {// 当索引值等于7即遍历到‘h’,就倒过来遍历的标记即 i--
                flag = MINUS;
            } else if (i == 0) {// 当索引值等于0即到了‘a',就正方向遍历即 i++
                flag = PLUS;
            }
            if (flag == PLUS) {// 当标记为正
                i++;
            } else if (flag == MINUS) {// 当标记为反
                i--;
            }
        }
    }
    /**
     * 报数;不过我觉得这里可以不用switch,可能我理解错了题目
     * 
     * @param n
     */
    private static void number(char n) {
        String str = "";
        switch (n) {
        case 'a':
            str = "a";
            break;
        case 'b':
            str = "b";
            break;
        case 'c':
            str = "c";
            break;
        case 'd':
            str = "d";
            break;
        case 'e':
            str = "e";
            break;
        case 'f':
            str = "f";
            break;
        case 'g':
            str = "g";
            break;
        case 'h':
            str = "h";
            break;
        default:
            break;
        }
        num++;
        System.out.println(str + "    " + num);
    }
}这是目标数为20的运行结果,看下是不是你想要的(代码有点乱,不过都写了注释了)