起因
- 超無聊的一道題,保齡球得分真是麻煩;今天下午偶然看見結對編程,然後就申請了一下,寫了這道題;
完全不想解釋,超無聊的題
代碼
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;
}
收穫
- 努力吧,這道題寫了好久,真是麻煩啊;保齡球的得分好複雜;