Sistema de Agenda Telefônica?

Olá pessoal!

Sou iniciante em Java, e garrei na resolução de um trabalho da Faculdade!!! (mais precisamente na parte do menu de opções…:sweat_smile:)

Enunciado: Criar um sistema de Agenda Telefônica. O projeto devo possuir no mínimo 3 classes:
Contato (Código, Nome e Telefone); Agenda (aceitar no máximo 10 registros); Principal
(main com o menu de opções – ver métodos da classe Agenda).
A classe Agenda deve possuir 6 métodos:
1 - listarTodos();
2 - inserirContato(contato); //não deve aceitar telefones repetidos
3 - editarContato(telefone, contato);
4 - apagarContato(telefone);
5 - apagarTodos();
6 - imprimirMemoria(); //imprimir mensagem: 2/10

Agora segue tudo o que já fiz!

Classe Contato:

`
public class Contato {

private int codigo;
private String nome;
private String telefone;

public int getCodigo() {
	return codigo;
}

public void setCodigo(int codigo) {
	this.codigo = codigo;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

}`

Classe Agenda:

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

public class Agenda {

ArrayList<Contato> registros = new ArrayList<Contato>();
int tamanhoMaximo = 10;

public void listarTodos() {

	if (this.registros.size() == 0) {
		System.out.println("**********************************************");
		System.out.println("A lista está vazia!");
		System.out.println("**********************************************\n");
	} else {
		for (int i = 0; i < registros.size(); i++) {
			System.out.println("**********************************************");
			System.out.println("Código: " + registros.get(i).getCodigo());
			System.out.println("Nome: " + registros.get(i).getNome());
			System.out.println("Telefone: "
					+ registros.get(i).getTelefone());
			System.out.println("**********************************************\n");

		}
	}

}

public void inserirContato(Contato contato) throws ListaCheiaException {
	
	int tamanhoLista = this.registros.size();
	if (tamanhoLista < this.tamanhoMaximo) {
		
		this.registros.add(contato);
	} else {
		throw new ListaCheiaException();
	}
}

public void editarContato(String telefone, Contato contato) {

	for (int i = 0; i < this.registros.size(); i++) {
		if (this.registros.get(i).getTelefone() == telefone) {
			this.registros.get(i).setCodigo(contato.getCodigo());
			this.registros.get(i).setNome(contato.getNome());
			return;
		}
	}

	System.out.println("**********************************************");
	System.out.println("Registro Não Encontrado.");
	System.out.println("**********************************************\n");

}

public void apagarContato(Contato contato) {
	this.registros.remove(contato);

}

public void apagarTodos() {
	this.registros.clear();
}

public void imprimirMemoria() {
	int memoria = this.registros.size();
	System.out.println("Memória: " + memoria + "/10");

}

}`

Classe Principal:

`public class Principal {

public static void main(String[] args) throws ListaCheiaException {

	Agenda agenda = new Agenda();
	MenuDeOpcoes menu = new MenuDeOpcoes();

	Contato c1 = new Contato();
	Contato c2 = new Contato();
	Contato c3 = new Contato();
	Contato c4 = new Contato();
	Contato c5 = new Contato();
	Contato c6 = new Contato();
	Contato c7 = new Contato();
	Contato c8 = new Contato();
	Contato c9 = new Contato();
	Contato c10 = new Contato();
	Contato c11 = new Contato();

	c1.setCodigo(1);
	c1.setNome("Monteiro Lobato");
	c1.setTelefone("(31) 7544-9025");

	c2.setCodigo(2);
	c2.setNome("Machado de Assis");
	c2.setTelefone("(31) 9212-8472");

	c3.setCodigo(3);
	c3.setNome("Jorge Amado");
	c3.setTelefone("(31) 9407-4701");

	c4.setCodigo(4);
	c4.setNome("Vinícius de Moraes");
	c4.setTelefone("(31) 9349-7413");

	c5.setCodigo(5);
	c5.setNome("Carlos Drummond de Andrade");
	c5.setTelefone("(31) 9125-5578");

	c6.setCodigo(6);
	c6.setNome("Cecília Meirelles");
	c6.setTelefone("(31) 9889-1800");

	c7.setCodigo(7);
	c7.setNome("Paulo Coelho");
	c7.setTelefone("(31) 9730-1254");

	c8.setCodigo(8);
	c8.setNome("Érico Veríssimo");
	c8.setTelefone("(31) 9685-1510");

	c9.setCodigo(9);
	c9.setNome("Graciliano Ramos");
	c9.setTelefone("(31) 8807-4528");

	c10.setCodigo(10);
	c10.setNome("Guimarães Rosa");
	c10.setTelefone("(31)8910-0470");
	
	try {
		agenda.inserirContato(c1);
		agenda.inserirContato(c2);
		agenda.inserirContato(c3);
		agenda.inserirContato(c4);
		agenda.inserirContato(c5);
		agenda.inserirContato(c6);
		agenda.inserirContato(c7);
		agenda.inserirContato(c8);
		agenda.inserirContato(c9);
		agenda.inserirContato(c10);
	} catch (ListaCheiaException e) {
		System.out.println(e.getMessage());

	}		
	
	menu.menu();
}

}`

Classe MenuDeOpcoes:

`import java.awt.Menu;
import java.util.Scanner;

public class MenuDeOpcoes {

Agenda agenda;
private String telefone;

public void menu() throws ListaCheiaException {

	Scanner scan = new Scanner(System.in);

	System.out.println("***********************************************************");
	System.out.println("******************** AGENDA TELEFÔNICA ********************");
	System.out.println("***********************************************************\n");

	System.out.println("***********************************************************");
	System.out.println("Informe a alternativa desejada referente ao menu abaixo:\n");
	System.out.println("1 - Listar os contatos");
	System.out.println("2 - Inserir novo contato");
	System.out.println("3 - Editar contato");
	System.out.println("4 - Apagar contato");
	System.out.println("5 - Apagar todos os contatos existentes");
	System.out.println("6 - Mostrar memória");

	String opcao = scan.next();

	if (opcao.equals("1")) {
		agenda.listarTodos();
	} else if (opcao.equals("2")) {
		Contato contato = null;
		agenda.inserirContato(contato);
	} else if (opcao.equals("3")) {
		Contato contato = null;
		agenda.editarContato(telefone, contato);
	} else if (opcao.equals("4")) {
		Contato contato = null;
		agenda.apagarContato(contato);
	} else if (opcao.equals("5")) {
		agenda.apagarTodos();
	} else if (opcao.equals("6")) {
		agenda.imprimirMemoria();
	} else {
		System.out.println("Opção inválida!!!\nDigite novamente:");
	}

}

}`

E por fim (ufá!:weary:) Classe ListaCheiaException:

`public class ListaCheiaException extends Exception {

public ListaCheiaException() {
	
	super("Lista Cheia!");
}

}`

Galera, ao escolher uma opção do menu, aparece sempre o mesmo erro. E testando as funções separadamente, elas funcionam!!! Detalhe: Criei uma Exception, pois o exercício solicita no mínimo uma…

Por favor, se alguém puder me ajudar ficarei imensamente agradecido!!!

Ao inves de String > String opcao = scan.next();
Coloque como um int:
int opcao;
opcao = scan.nextInt();

E use:
Abra um do while aqui com o menu de opções, assim sempre que terminar de executar um metodo, irá voltar para esse menu…

switch (opcao) {
case 1:
agenda.listarTodos();
break;
}
Seria
String opcao = scan.nextLine(); e int opcao = scan.nextInt();