无法打印Arraylist,因为打印方法看不到吸气剂

时间:2019-02-20 10:34:48

标签: java arraylist

我学习Java了一个星期,现在遇到了一个问题,因为我想在方法printArray中打印所有Arraylist,但是该方法看不到getName()和其他方法,而且我也不知道如何解决我的问题。非常感谢你的帮助。 如果可以的话,请告诉我我在做错什么。

班级职位:

  public class Positions {

        List<Positions> list = new ArrayList<>(15);

        int ageAdd;
        int IDAdd;
        String nameAdd;
        int counter;
        String name;
        int age;
        int ID;

        public Positions(String name, int age, int ID) {
            this.name = name;
            this.age = age;
            this.ID = ID;
        }

        public Positions() {
            this("", 0, 0);
        }

//there are methods:
//adding element
//removing element
//changing values
//etc
public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getID() {
        return ID;
    }

    public void printArray() {
        for (int i = 0; i < list.size(); i++) {
            System.out.println(i + " : " + " NAME: " + list.getName(i) + " AGE: " + list.getAge(i) + " ID: " list.getID(i));


        }
    }

主要班级:

public class ArrayList2
{
    public static void main (String[] args)
    {
        Positions p = new Positions();
        System.out.println("----LISTA TABLICOWA-----");
        System.out.println("Co chcesz wykonać? ");
        System.out.println("1. Dodac element do listy. ");
        System.out.println("2. Usunac elemnt z listy.");
        System.out.println("3. Wstawić na dowolna pozycje.");
        System.out.println("4. Rozmiar listy.");
        System.out.println("5. Zmienic wartosc na podanym indeksie.");
        System.out.println("6. Wyświetlić listę. ");


       while(true) {
           System.out.println("podaj pozycję: ");
           Scanner ch = new Scanner(System.in);
           int choice= ch.nextInt();
            switch (choice)
            {
                case 1:
                {
                    p.addPosition(); //?
                    break;
                }
                case 2:
                {
                    p.removePosition();
                    break;
                }
                case 3:
                {
                    p.setOnAnyPosition();
                    break;
                }
                case 4:
                {
                    p.ArraySizeShow();
                    break;
                }
                case 5:
                {
                    p.changePosition();
                    break;
                }
                case 6:
                {
                    p.printArray();
                    break;
                }
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您只是对数组访问有问题:

代替使用:

public void printArray() {
   for (int i = 0; i < list.size(); i++) {
       System.out.println(i + " : " + " NAME: " + list.getName(i) ...);
   }
}

您应该使用:

public void printArray() {
   for (int i = 0; i < list.size(); i++) {
       System.out.println(i + " : " + " NAME: " + list.get(i).getName() ...);
   }
}

因为您要获取特定元素的名称,并且以OO语言表示,这通常意味着在对象本身上调用方法。

在您的示例中,您具有一个包含包含名称的对象的列表。因此,如果要从列表中访问名称,则需要首先获取一个元素,然后获取其名称。

HTH。

答案 1 :(得分:0)

尝试使用以下代码更改方法。希望对您有所帮助。

public void printArray() {
        for (int i = 0; i < list.size(); i++) {
            System.out.println(i + " : " + " NAME: " + list.get(i).getName() + " AGE: " + list.get(i).getAge() + " ID: " list.get(i).getID());


        }
    }

答案 2 :(得分:0)

要遍历您的列表,请使用

for (int i = 0; i < list.size(); i++) {
    Positions p = list.get(i);
    System.out.println(i + " : " + " NAME: " + p.getName() + " AGE: " + p.getAge() + " ID: " + p.getID());
}

int index =0;
for (Positions p : list) {
    System.out.println(index++ + " : " + " NAME: " + p.getName() + " AGE: " + p.getAge() + " ID: " + p.getID());
}