保龄球得分计算

xiaoxiao2021-02-28  82

起因

超无聊的一道题,保龄球得分真是麻烦;今天下午偶然看见结对编程,然后就申请了一下,写了这道题;

完全不想解释,超无聊的题

代码

public int getBowlingScore(String bowlingCode) { if (bowlingCode==null ||bowlingCode.length()<=0) return 0; char[] c = bowlingCode.toCharArray(); int i = 0; int X = 0; int Y = 0; int sum = 0; int current = 0; int num = 0; boolean flag = false; while (i < c.length) { current = 0; num = 0; if (c[i] == '|') { i++; while (i < c.length) { if (flag) { sum += NumofCurrentChar(c[i]) * 2; flag = false; } else sum += NumofCurrentChar(c[i]); i++; } } while (i < c.length && c[i] != '|') { int temp = current; current = NumofCurrentChar(c[i]); if (temp > current) { num = temp; } else if (current> temp) { num = current; current -= temp; } if (X > 0) { if (flag) { sum += current * 2; flag = false; } else sum += current; X--; } if (Y > 0) { sum += current; Y--; } if (c[i] == 'X') { if (X == 1) { flag = true; } X = 2; } else if (c[i] == '/') { Y = 1; } i++; } sum += num; i++; } return sum; } private int NumofCurrentChar(char c) { int current; if (c == '/') current = 10; else if (c == '-') current = 0; else if (c == 'X') current = 10; else current = c - '0'; return current; } public int getBowlingScore1(String bowlingCode) { char[] chars = bowlingCode.toCharArray(); int i = 0; int sum = 0; int[] socere = new int[22]; int x = 0; int current = 0; while (i < chars.length) { current = -10; if (chars[i] == '|') { while (i < chars.length - 1 && x < socere.length) { i++; socere[x] = NumofCurrentChar(chars[i]); if (socere[x] == -2) { socere[x] = 10; } x++; } } while (i < chars.length && chars[i] != '|') { int temp = current; current = NumofCurrentChar(chars[i]); if (current >= 0 && temp > current) current = temp; i++; if (x < socere.length) if (current == -2) { socere[x++] = 10; socere[x++] = current; } else { socere[x++] = current; } } i++; } System.out.println(Arrays.toString(socere)); int[] socere2 = new int[10]; int j = socere2.length - 1; while (j >= 0) { if (socere[2 * j + 1] == -2) { if (j == 9) socere2[j] = socere[2 * j + 2] + socere[2 * j + 3] + 10; else if (socere[2 * (1 + j) ] == 10 ) { socere2[j] = 10+ socere[2 * (2 + j) ]+10; } else if (socere[2*(j+1)] <10) { socere2[j] = 10 +socere[2*(j+1)+1]; } socere[2 * j + 1] = 10; } else if (socere[2 * j + 1] == -1) { socere2[j] = socere[j * 2 + 1 + 1] + 10; socere[2 * j + 1] = 10; } else socere2[j] = socere[(j + 1) * 2 - 1]; j--; } j = 0; while (j < socere2.length) { sum += socere2[j++]; } System.out.println(Arrays.toString(socere2)); return sum; } /** * 返回当前位置的数值 * * @param c * @return */ private int NumofCurrentChar(char c) { int current; if (c == '/') current = -1; else if (c == '-') current = 0; else if (c == 'X') current = -2; else current = c - '0'; return current; }

收获

努力吧,这道题写了好久,真是麻烦啊;保龄球的得分好复杂;
转载请注明原文地址: https://www.6miu.com/read-41405.html

最新回复(0)