Java 调用列表中定义的对象的方法

Java 调用列表中定义的对象的方法,java,arraylist,methods,Java,Arraylist,Methods,我正在尝试使用ArrayList called phone从主方法调用addContact方法,但它不起作用 代码如下: import java.util.ArrayList; import java.util.Scanner; class A { String name; int num; Scanner sc = new Scanner(System.in); public A(String name, int num) { this.n

我正在尝试使用ArrayList called phone从主方法调用addContact方法,但它不起作用

代码如下:

import java.util.ArrayList;
import java.util.Scanner;

class A {

    String name;
    int num;
    Scanner sc = new Scanner(System.in);

    public A(String name, int num) {
        this.name= name;
        this.num= num;
    }

    public void addContact() {
        sc.nextLine();
        System.out.println("Enter name:");
        name = sc.nextLine();
        System.out.println("Enter number:");
        num = sc.nextInt();
    }
}

public class Main {
    static void menu() {
        System.out.println("1. add");
        System.out.println("2. break");
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        ArrayList <A> phone;

        while(true) {
            menu();
            int c = sc.nextInt();
            if(c==1) {
                phone.add().addContact();
                //I'm trying to call addContact()
            } else if(c==2) {
                break;
            }
        }
    }
}

为什么我不能直接呼叫phone.add.addContact?

您需要创建列表的实例:


ArrayList phone=新的ArrayList

您的问题从这里开始:

 ArrayList <A> phone;

然后,在您的主要方法中,您可以执行以下操作:

class Contact {
   private final String name;
   private final int number;

   Contact(String name, int number) {
     this.name = name;
     this.number = number;
   }
 boolean loop = true;

 while (loop) {
  ... have user enter a name and a number
  if (name.equals("STOP")) {
    loop = false;
  } else {
    Contact contact = new Contact(name, number);
    phones.add(contact);
  }
}

应包含要添加到ArrayList的A对象。

您需要返回A对象

 public A  addContact() {
            sc.nextLine();
            System.out.println("Enter name:");
            name = sc.nextLine();
            System.out.println("Enter number:");
            num = sc.nextInt();
    return new A(name,num);
        }


刚刚删除了你的addContact,并将其放置在while中。现在,我创建了一个新的实例,并将其添加到列表中。现在应该可以了。以后请发布更精确的问题。

我无法给出工作代码。只需检查以下几点,使您的程序更好

为什么在使用add contact方法时创建带参数的构造函数。 在主类中为类A创建对象的位置。 尝试检查如何使用ArrayList类。因为您没有正确使用add。
在哪里添加这些行?在主方法中
  ArrayList <A> phone;
phone.add().addContact();
 public A  addContact() {
            sc.nextLine();
            System.out.println("Enter name:");
            name = sc.nextLine();
            System.out.println("Enter number:");
            num = sc.nextInt();
    return new A(name,num);
        }
 if(c==1)
            {
                phone.add(addContact);                
            }
import java.util.ArrayList;
import java.util.Scanner;

class A {
String name;
int num;
Scanner sc = new Scanner(System.in);

public A(String name, int num) {
    this.name= name;
    this.num= num;
}

}

public class Main {
static void menu()  
{
    System.out.println("1. add");
    System.out.println("2. break");

}

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    ArrayList <A> phone = new Arraylist<A>();

    while(true)
    {
        menu();
        int c = sc.nextInt();
        if(c==1)
        {
            System.out.println("Enter name:");
            String name = sc.nextLine();
            System.out.println("Enter number:");
            int num = sc.nextInt(); 
            phone.add(new A(name,num));

        }
        else if(c==2)
        {
            break;
        }
    }

}

}