用java实现switch报数游戏
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 07:33:23
用java实现switch报数游戏
a,b,c,d,e,f,g,h,共八人站成一排,按图示方法从1开始报数,求谁先报到8411250
八个人报数,从a开始,每报14个数,便又回到A,形成14个数为一个周期的重复。
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的运行结果,看下是不是你想要的(代码有点乱,不过都写了注释了)
* 根据题目的提示:“从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的运行结果,看下是不是你想要的(代码有点乱,不过都写了注释了)