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