public class Alunos {
private String nome;
public Alunos(String nome)
{
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome=nome;
}
}
import java.util.ArrayList;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TesteLista {
public static void main(String[] args) {
/// int n= listaPessoa.size();
Scanner ler = new Scanner(System.in);
// String entrada = ler.nextLine();
// System.out.println(entrada);
ArrayList listaPessoa = new ArrayList();
for(int i=0; i <=6; i++){
System.out.println("\nDigite o nome:");
String nome= ler.nextLine();
listaPessoa.add(new Alunos(nome));
System.out.println("\nPercorrendo o ArrayList (usando o índice)");
System.out.printf("posicao %d \n ", i, listaPessoa.get(i));
}
}
}
Feita a escolha do usuário pelo número correspondente ao nome,
o programa deverá alterar o nome da lista e mostrar na tela
novamente todos os nomes, inclusive o nome alterado, e voltar ao
menu de alteração, até o usuário escolher a opção de terminar o
programa.
Alguém tem ideia de como alterar dessa forma ?
Primeiramente sua classe deveria se chamar Aluno
, no singular, pois cada objeto dela representa UM aluno e NÃO VÁRIOS alunos.
Corrija isso, em seguida, para alterar um objeto da lista, obtenha a referência dele e altere-o, simples assim.
Exemplo:
Aluno alunoQueQueroAlterar = listaPessoa.get(posicaoDesejada); // obtém o objeto desejado
alunoQueQueroAlterar.setNome(novoNomeQueQuerAtribuir); // altera a propriedade desejada
Como vou saber o aluno que quero alterar, se é o usuário que vai digitar ?
pode ser assim
Aluno alteraAluno= listaPessoa.get(ler.next());// vai pegar o objeto na posição desejada
alteraAluno.setNome(ler.next());//ativa o método acessor do Objeto Aluno na posição desejada de acordo com oque o usuário determinar.
Você pode procurar pelo nome, já que é o único atributo de aluno e alterar usando o método set
. Exemplo:
public class Aluno {
private String nome;
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return nome;
}
}
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
public class TelaLista {
private Scanner leitor = new Scanner(System.in);
private List<Aluno> alunos = new ArrayList<>();
private void exibirMenu(){
System.out.println("\nEscolha uma das opções:\n"
+ "1 - Cadastrar\n"
+ "2 - Exibir\n"
+ "3 - Atualizar\n"
+ "4 - Sair");
}
private Aluno cadastrarAluno(){
Aluno aluno = new Aluno();
System.out.print("\nNome do aluno: ");
aluno.setNome(leitor.next());
return aluno;
}
private void listarAlunos(){
for(Aluno aluno : alunos){
System.out.println("\nNome: " + aluno.getNome());
}
}
private int buscarAluno(){
String nomeAluno;
System.out.print("\nNome do aluno a ser alterado: ");
nomeAluno = leitor.next();
for(int indice = 0; indice < alunos.size(); indice++){
if(alunos.get(indice).getNome().equals(nomeAluno))
return indice;
}
return -1;
}
public static void main(String[] args){
short opcao;
Aluno alunoCadastrado = null;
//Scanner leitor = new Scanner(System.in);
//List<Aluno> alunos = new ArrayList<>();
TelaLista telaLista = new TelaLista();
do{
telaLista.exibirMenu();
System.out.print("Opção escolhida: ");
opcao = telaLista.leitor.nextShort();
switch(opcao){
case 1:
alunoCadastrado = telaLista.cadastrarAluno();
telaLista.alunos.add(alunoCadastrado);
break;
case 2:
if(telaLista.alunos.size() > 0)
telaLista.listarAlunos();
else
System.out.println("\nNenhum aluno cadastrado!");
break;
case 3:
int indice = telaLista.buscarAluno();
alunoCadastrado = telaLista.cadastrarAluno();
if(indice != -1)
telaLista.alunos.set(indice, alunoCadastrado);
else
System.out.println("\nAluno não cadastrado!");
break;
case 4:
System.exit(0);
break;
default:
System.out.println("\nOpção inválida!\n");
telaLista.exibirMenu();
}
}while(opcao != 4);
telaLista.leitor.close();
}
}
Rodando…