Dentro da própria classe, em métodos de instância/construtores, não precisa usar this, só se tiver uma variável/parâmetro com o mesmo nome e você precisar desambiguar
@DanLucioPrada é essa sala aqui. consegue acessar?
@IsvaldoFernandes É porque aí você está tentando acessar uma variável de instância num método de classe (o main é estático). No outro caso, ela estava a ser acessada num método de instância (não-static).
Realizei outra, em cada novo registro tem um campo código que vai se incrementando e sendo registrado, ae se a pessoa quer deletar alguém, ela informa o código e eu faço o seguinte comando:
@DanLucioPrada Então, o método remove(int) vai remover o enésimo item da lista, independentemente do conteúdo
Se você quer remover "a pessoa que possui o código X", então você vai ter que percorrer a lista procurando por uma pessoa com esse código, e então remover ou usando o próprio objeto Pessoa ou usando seu índice na lista
@IsvaldoFernandes Hehe nessas horas um this ou self explícito ajudam... :P
é, na época que eu trabalhava com Java, até pensei em fazer essa certificação, mas depois mudei de plataforma e desisti
saber a diferença entre o que é da classe e o que é da instância é importante (a menos que a linguagem não tenha classes, tipo JavaScript), mas podia ser um pouco mais fácil, sim
Acho que o problema é que no mesmo namespace você acessa tanto variáveis locais, quanto membros da instância, quanto membros da classe, nessa ordem eu acho. Isso economiza teclado, mas te obriga a memorizar a ordem de precedência ao resolver um nome
@IsvaldoFernandes Vou limpar meus comentários na sua resposta, pra ela não ficar poluída
@DanLucioPrada Ainda está aí? Quer perguntar mais alguma coisa? Caso contrário, estou de saída
Fique à vontade para abrir outra (e mais) pergunta no site principal, se ainda tiver mais dúvidas.
Se você quiser acessar as pessoas por índice, blz, sem problemas! Se você quer que cada pessoa tenha código, blz também. Os 2 ao mesmo tempo é que não dá.
Qual versão do Java você está usando?
Pergunto porque no Java 8 deve ter um jeito bem fácil de fazer isso, mas acho que quase ninguém o usa, ainda... :(
ótimo! me dá um segundo pra consultar a documentação, enquanto isso sugiro que leia essa pergunta
Pronto! No Java 8 a ArrayList possui um método removeIf que funciona com lambdas. Basta você dizer qual condição a pessoa precisa satisfazer pra ser removida, e passar essa condição pro removeIf. Assim:
listaPessoas.removeIf(p => p.codigo == 2);
p no caso é cada pessoa contida na lista (ele vai testar essa condição pra cada pessoa da lista, e onde p.codigo == 2 retornar true ele vai remover)
Se cada pessoa tiver um código diferente, ele então só vai remover a pessoa com o código 2. Você pode usar a mesma estratégia para outros campos também, ou mesmo para lógicas mais complexas.
estou atribuindo um código para cada registro, cada vez que registro uma pessoa, tem um for rodando pq o usuário pode registrar várias pessoas, e toda vez que ele escolhe a opção de inserir, um campo código é incrementado e atribuído á pessoa que está sendo registrada.