Я создаю очень простой телефонный справочник для домашнего задания, но я застрял.Я пробовал просматривать похожие темы, и хотя они были полезны, они не ответили на мой вопрос.У меня есть каталог имени класса, который имеет ArrayList, который скомпилирован из другого класса с именем Person.Класс Person собирает информацию о контакте: имя и фамилия, номер телефона и адреса электронной почты всех контактов.Я пытаюсь прочитать размер ArrayList из другого класса: _MainMenu, так что если я хочу добавить другой контакт, метод addNewPerson может быть динамическим.Я включу код для MainMenu и Directory.По сути, я стараюсь не создавать вручную новый объект для класса Person, потому что я не знаю, сколько контактов будет у пользователя.Я надеюсь, что это имеет смысл ... Извините, если это не так.Я постараюсь уточнить, как вопросы, несомненно, приходят.
import java.util.Scanner;
public class _MainMenu {
public static Scanner input = new Scanner(System.in);
public static int choice;
public static String firstName = new String();
public static String lastName = "";
public static String phoneNumbers;
public static String emailAddresses;
public static Person pI = new Person ();
public static void main(String[] args) throws Exception
{
Directory d1 = new Directory("myDir.txt");
do
{
printMenu();
selectSubMenu();
if(choice == 1)
{
for(int i = 0; i < d1.getSize(); i++)
d1.addNewPerson(pI);
}
}while(choice != 3);
d1.writeToFile("myDir.txt");
}
public static void printMenu()
{
System.out.printf("%s\n%s\n%s\n%s\n",
"Select The Number Of Your Choice: ",
"1 - Add New Contact",
"2 - Search (Display/Edit/Remove)",
"3 - Exit");
}
public static void selectSubMenu()
{
choice = input.nextInt();
switch(choice)
{
case 1:
addNewContact();
break;
case 2:
// search();
break;
case 3:
break;
default:
System.out.println("Invalid selection. Please try again.");
}
}
public static void addNewContact()
{
System.out.println("Please enter the first name: ");
firstName = input.next();
System.out.println("Please enter the last name: ");
lastName = input.next();
System.out.println("Please enter up to three phone numbers: ");
phoneNumbers += input.next();
System.out.println("Please enter up to three email addresses: ");
emailAddresses += input.next();
}
}
А вот код для класса Directory:
import java.util.ArrayList;
import java.util.Formatter;
import java.io.File;
import java.util.Scanner;
public class Directory {
private ArrayList <Person> directory = new ArrayList <Person>();
public Directory(String name) throws Exception
{
File f = new File(name);
Scanner input;
if(f.exists())
{
input = new Scanner (f);
while(input.hasNext())
{
Person p = new Person();
p.setFname(input.next());
p.setLname(input.next());
int pNumber = input.nextInt();
for (int i=0; i< pNumber; i++)
p.setPhone(input.next());
int eNumber = input.nextInt();
for (int i=0; i< eNumber; i++)
p.setemail(input.next());
directory.add(p);
}
input.close();
}
else
f.createNewFile();
}
public Person find(String fName, String lName)
{
for(int i=0; i<directory.size(); i++)
{
if (directory.get(i).getLname().equals(lName) && directory.get(i).getFname().equals(fName))
return directory.get(i);
}
return null;
}
public void addNewPerson(Person p)
{
directory.add(p);
}
public void writeToFile(String name) throws Exception
{
Formatter inFile = new Formatter(name);
for( int i =0; i< directory.size(); i++){
inFile.format("%s %s %d ", directory.get(i).getFname(),directory.get(i).getLname(),directory.get(i).pNum);
for(int j=0; j<directory.get(i).pNum; j++)
inFile.format("%s ",directory.get(i).getPhones()[j]);
inFile.format("%d ", directory.get(i).eNum);
for(int j=0; j<directory.get(i).eNum; j++)
inFile.format("%s ",directory.get(i).getemails()[j]);
}
inFile.close();
}
}
Я понимаю, что код в MainMenu внутри if (выбор== 1) утверждение не работает, но я не могу придумать, как это сделать.Я хочу, чтобы Person pI был динамической переменной, поэтому, если пользователь хочет добавить еще один контакт, он выбирает «Добавить контакт», и программа определяет, сколько контактов уже есть в каталоге ArrayList, и затем добавляет «1».введите эту новую переменную в d1.addNewPerson (pI), чтобы она работала примерно так:,В любом случае, если кто-то может понять это и знать, как работать с кодом, я был бы очень признателен.Спасибо.