简体   繁体   中英

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;
    }
}

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM