Java ArrayindexOutofBoundsException от char до int

У меня возникли проблемы с выяснением этого, я пробовал разные методы и обходные пути, но я думаю, что я слишком боюсь даже коснуться кода для того количества ошибок, которые мне удается получать каждый раз!

Проблема в том, что я пытаюсь просто прочитать из массива char, который в настоящее время имеет 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));

1 ответ

Ты сделаешь:

for (int i = 0; i < 1000; i++) {       
  resultat[i] = tempStr.charAt(i);

и хорошо, вы не можете быть уверены, что tempStr должно быть 1000 символов или дольше. Сделайте что-то вроде thta:

for (int i = 0; i < 1000; i++) {    
  if(tempStr.length() <= i)
    break;
  resultat[i] = tempStr.charAt(i);

И вы не можете просто использовать toString в BufferedReader, прочитать весь файл nextLine метод, а затем делать вещи с этим.

Другие вопросы по тегам