Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getter在其他类中不可见_Java_Arraylist - Fatal编程技术网

Java getter在其他类中不可见

Java getter在其他类中不可见,java,arraylist,Java,Arraylist,我学习Java一周了,现在我遇到了一个问题,因为我想打印方法printArray中的所有Arraylist,但该方法没有看到getName()和其他方法,我不知道如何解决我的问题。非常感谢你的帮助。 如果可以,请让我看看我的东西;我做错了 班级职位: public class Positions { List<Positions> list = new ArrayList<>(15); int ageAdd; int

我学习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;
                }
            }
        }
    }
}

您只是在阵列访问方面遇到问题:

而不是使用:

public void printArray() {
   for (int i = 0; i < list.size(); i++) {
       System.out.println(i + " : " + " NAME: " + list.getName(i) ...);
   }
}
public void printary(){
对于(int i=0;i
你应使用:

public void printArray() {
   for (int i = 0; i < list.size(); i++) {
       System.out.println(i + " : " + " NAME: " + list.get(i).getName() ...);
   }
}
public void printary(){
对于(int i=0;i
因为您希望获得特定元素的名称,并且使用OO语言,这通常意味着对对象本身调用方法

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


HTH.

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

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());


        }
    }
public void printary(){
对于(int i=0;i
要循环查看列表,请使用

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

您必须在列表的元素上调用getName(),而不是在列表本身上调用getName()“方法看不到getName()和其他方法”是什么意思?编译或运行代码时是否会出错?确切的错误消息是什么?错误发生在代码中的什么地方?
list.get(i).getName()
在Itellij getName()中,我用红色表示,并且在@KamilaNowak中有一条注释“无法解析方法‘getName(int)’”,这是因为这些getter不存在。不在列表界面中,这是您调用它们的地方。在您自己的类中,它们不接受参数,因此在正确的类型上调用它们时,不要传递参数谢谢您的回答!您应该检查方法
getName(i)
:它不需要参数,您应该将其更改为
getName()
。是。你是对的。实际上这是复制粘贴错误。我考虑过了,但Positions的实例“p”在main中,所以在我的类“Positions”中,我有一个错误,编译器找不到“p”。@KamilaNowak这个错误是因为在没有引用另一个类的情况下,不能引用另一个类中的变量。但是这个答案中的代码是有效的。在此方法中,位置p是局部定义的。即使Positions类中有一个[Positions p],它仍然可以工作,因为该变量在方法中被局部重写。
int index =0;
for (Positions p : list) {
    System.out.println(index++ + " : " + " NAME: " + p.getName() + " AGE: " + p.getAge() + " ID: " + p.getID());
}