這是用於計算保齡球分數一個代碼,我需要幫助在定影此錯誤:在螺紋保齡球得分和異常處理
異常「主」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:0
這裏是我的輸入(我存儲在一個名爲bowling.txt的文本文件中)。
0 P 5 3 4 2 4 4 3 5 0 8 3 1 2 1 6 4 3 4
遊戲有10幀,每幀兩次嘗試,所以我認爲我需要20個數字(分數)的文本文件。
這裏是我所得到的:
The score is 66
The score is 77
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.charAt(Unknown Source)
at pin.main(pin.java:77)
N.B:我會爲+1所有有用的答案!
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class pin
{
static String tries;
public static int value(int index)
{
int i = 0;
if (tries.charAt(index) == 'T')
i = 10;
else if (tries.charAt(index) == 'P')
i =10 -(tries.charAt(index-2)-'0');
else
i = tries.charAt(index)-'0' ;
return i;
}
public static void main(String[] args) throws FileNotFoundException, IOException
{
int score = 0;
int frameIndex;
int i = 0;
FileReader fr = new FileReader("C:/Users/PC4599/Desktop/programming/bowling.txt");
BufferedReader br = new BufferedReader(fr);
tries = br.readLine();
while (tries != null)
{
score = 0;
frameIndex = 0;
i = 0;
while (frameIndex != 10)
{
if (tries.charAt(i)=='T') //Strike
{
score =(score + 10 + value(i + 2) + value(i + 4));
i = i + 2;
}
else if (tries.charAt(i+2)=='P') //Spare
{
score =(score + 10 + value(i + 4));
i = i + 4;
}
else
{
score =(score + (tries.charAt(i)-'0') + (tries.charAt(i + 2)-'0'));//Neither Strike nor Spare
i = i + 4;
}
frameIndex = frameIndex + 1;
}
System.out.println("The score is "+score);
tries = br.readLine();
}
br.close();
fr.close();
}
}
實際上,您需要21個數字,因爲如果您備用/打擊它,則可以在第十幀中投擲三次。此外,你應該閱讀關於得分的[一些文字](http://en.wikipedia.org/wiki/Bowling#Scoring),因爲如果你有打擊和備用,你會得到乘數以用於後面的投擲......並且你沒有'噸佔他們呢。 – brimborium
你是對的,我沒有考慮到「第十幀,當你有權獲得3次嘗試」的情況。 – user1639637