user2911767
user2911767

Reputation:

The type of the expression must be an array type but it resolved to

Im new to java. I dont understand why these errors are occurring. trying to make an array list so that it saves each object. The errors im getting are The type of the expression must be an array type but it resolved to ArrayList on the line 'newbug1[i].setspecies();'

Thankyou in advance

import javax.swing.JOptionPane;
import java.util.ArrayList;

public class Abug2 {
    private String species;
    private String name;
    private char symbol = '\0'; 
    private int horposition = 0, verposition = 0, energy = 0, uniqueID = 1, counter; 


    public Abug2(String species, String name, char symbol)
    {
        uniqueID = counter;
        counter++;
    }


    public void setspecies(){
    species = JOptionPane.showInputDialog(null, "Enter the species: ");
    }
    public String getspecies(){
        return species;
    }

    public void setname(){
    name = JOptionPane.showInputDialog(null, "Enter the name: ");
    }
    public String getname(){
    return name;
    }

    public void setsymbol(){
    symbol = name.charAt(0);
    }
    public char getsymbol(){
        return symbol;
    }

    public int getid(){
        return uniqueID;
    }

    public int gethorizontal(){
    return horposition;
    }

    public int getvertical(){ 
        return verposition;
    }

    public int getenergy(){
        return energy;
    }

    //The class ABug has a set of methods: two or more constructors, toString, toText, and getters and setters for the attributes 

    public String toString(){
        String tostring = "\nName: " + name + "\nHorizontal Position: " + horposition + "\nVertical Position: " + verposition + "\n";
                return tostring;
    }

    public String toText(){
        String totext = getspecies() + getname() + getsymbol() + getid() + gethorizontal() + getvertical() + getenergy();
                return totext;
    }


    public static void main (String [] args){       

        ArrayList<Abug2> newbug1 = new ArrayList<Abug2>();

        String choice = JOptionPane.showInputDialog(null, "Would you like to add another bug?: ");
            do{for (int i = 0; i < 3; i++) {

                newbug1.add(new Abug2("Bug", "Spider", 's'));

                newbug1[i].setspecies();
                newbug1[i].setname();
                newbug1[i].setsymbol();

                System.out.println(newbug1[i].toString());

            }       }while(choice != "yes");
            }

}

Upvotes: 1

Views: 11088

Answers (2)

benzonico
benzonico

Reputation: 10833

In order to access an element in an ArrayList you have to use a method called get.

In your code, replace newbug1[i] by newbug1.get(i)

And moreover, you should store that reference in a variable instead of recalling it again and again:

Abug2 currentBug = newbug1.get(i);
currentBug.setSpecies();   

Your code will gain in clarity.

Upvotes: 2

nanofarad
nanofarad

Reputation: 41281

For arraylists use get() instead:

newbug1.get(i).setspecies();
newbug1.get(i).setname();
newbug1.get(i).setsymbol();

Because it stores object references any setFoo calls affect the original object referenced in the arraylist.

Upvotes: 2

Related Questions