Search code examples
javaarraysindexoutofboundsexception

IndexOutOfBoundsException issue in java arraylist


The line in which the error occurs is indicated. The program consists of searching for the repeated characters and saving them in a list. In that list of type "letter", the letter will be saved in char format and the counter of the letters found.

 ArrayList<letter> list = new ArrayList<letter>();
 String comb = "";

 comb="hhhoofdpsdshodss";

 for(int i = 1; i<comb.length(); i++){   //16
     boolean finded = false;

     for(int j=0; j < i && finded == false; j++){
         if(comb.charAt(j)==comb.charAt(i)){
             try{
                 list.get(j).upCounter();     //Error here
             }catch(Exception E){
                 System.out.println(E);
             }
             finded = true;
         }
     }

     if(finded==false){
         list.add(new letter(comb.charAt(i)));  
     }
 }
    
 for(int i = 0; i<list.size() ; i++){
     System.out.println((char)list.get(i).getLetter() + ": " + list.get(i).getCounter());
 }

Here is the class "letter"

class letter{
    private char let;
    int counter= 0;

    public letter(char character){
        let=character;
        counter++;
    }
    public int getCounter(){
        return counter;
    }
    public void upCounter(){
        counter++;
    }
    public int getLetter(){
        return let;
    }
}

Solution

  • The issue is that when you begin, list is empty. When you try to access elements, it will always try to access a value that is not there, but because there is no element, there will be an error. Your ArrayList must have some values in it to begin.