我很困難搞清楚這一點,我已經嘗試了不同的方法和解決方法,但我認爲我太害怕,甚至不敢觸摸代碼的錯誤數量,我設法得到每一次!Java ArrayindexOutofBoundsException從字符到int
問題是我試圖從一個字符數組中讀取數據,每個元素中有1000個隨機生成的數字。 我需要顯示這個字符串/字符值在1-6之間的統計數據,並將其存儲到統計數組中,然後將其打印出來。我在哪裏做錯了?
繼承人我的代碼片段:
public static int[] showGame(String tempResult) throws IOException{
int statistics [] = new int [6];
char [] resultat = new char[1000];
String tempStr;
try{
BufferedReader indata = new BufferedReader(new FileReader("DiceGame.txt"));
tempStr = indata.toString();
char result [] = tempStr.toCharArray();
for (int i = 0; i < 1000; i++) {
resultat[i] = tempStr.charAt(i);
switch (result[i]) {
case '1':
statistics[0]++;
break;
case '2':
statistics[1]++;
break;
case '3':
statistics[2]++;
break;
case '4':
statistics[3]++;
break;
case '5':
statistics[4]++;
break;
case '6':
statistics[5]++ ;
break;
}
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "An error occured: " + ex);
}catch (NumberFormatException e){
JOptionPane.showMessageDialog(null,"Error: " + e);
}
//Arrays.toString(statistics);
return statistics;
}
編輯:也可能是因爲我不是從主正確調用它?
public static void main(String[] args) throws IOException {
int []Statistik = new int[6];
String tossValue = JOptionPane.showInputDialog("set value for amount f toss");
DiceWithArray.Game(tossValue); //Kasta in värdet in i klass metoden
String tempToss = DiceWithArray.Game(tossValue);
Statistik = DiceWithArray.showGame(tempToss);
System.out.println("Resultatet : " + Arrays.toString(Statistik));
'BufferedReader.toString'不會做你認爲它做的事。你需要使用'BufferedReader'來通過'read'或'readLine'讀取文件,並從中創建一個char數組。 – Zircon
你的indata調試器說什麼?這是你所期望的嗎?長度是否與你想要的一致?它可能不會對任何這些。也。一般來說,如果你打算讀取整個文件,硬編碼是不好的做法。length – CodeMonkey