Ich habe die Mühe, dies herauszufinden, ich habe verschiedene Methoden und Workarounds ausprobiert, aber ich denke, ich bin zu ängstlich, den Code für die Menge der Fehler zu berühren, die ich jedes Mal bekomme !Java ArrayindexOutofBoundsException von char zu int
Das Problem ist, dass ich versuche, einfach von einem Char-Array zu lesen, die derzeit 1000 zufällig generierte Zahlen in jedem Element hat. Ich muss Statistiken über diese String/chars-Werte anzeigen, die zwischen 1-6 liegen und sie in einem Statistik-Array speichern und dann ausdrucken. Wo mache ich etwas falsches?
Heres ein Ausschnitt aus meinem Code:
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;
}
EDIT: Oder könnte es sein, weil ich nicht bin es richtig von dem Haupt Aufruf ?!
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' macht nicht, was Sie denken, dass es tut. Sie müssen den 'BufferedReader' verwenden, um die Datei über' read' oder 'readLine' zu lesen und daraus ein char-Array zu erstellen. – Zircon
Was sagt Ihr Debugger über Indata? Ist es das, was Sie erwartet haben? Passt die Länge zu dem, was Sie wollen? Es wird wahrscheinlich keiner von diesen sein. Ebenfalls. im Allgemeinen ist es eine schlechte Übung, diese 1000 zu programmieren, wenn Sie beabsichtigen, die ganze Datei zu lesen. length – CodeMonkey