Acessar ArrayList de um método através de outro método
4 respostas
metodosjavaarraylist
S
silbrechlah
Olá, pessoal. Sou novo aqui no GUJ e em Java.
Eu não estou sabendo como fazer para acessar, por um método, um valor contido em outro método(um ArreyList, mais especificamente). Todos os métodos estão dentro da Classe principal, porém, eles estão antes do main. Tem como fazer isso? identar texto pre-formatado em 4 espaços
public class Trabalho {
Trabalhotrabalho=newTrabalho();publicstaticvoidcadastrarFuncionario(){System.out.println("\n\tDados do Funcionário:");Funcionariofuncionario=newFuncionario();ScannerdadosFuncionario=newScanner(System.in);ArrayList<Funcionario>funcionarios=newArrayList<>();System.out.print("Nome Completo: ");Stringnome=dadosFuncionario.nextLine();funcionario.setNome(nome);System.out.print("Informar Salário Base: ");doublesalarioBase=dadosFuncionario.nextDouble();funcionario.setSalarioBase(salarioBase);System.out.print("Informar Ano de Início: ");intanoInicio=dadosFuncionario.nextInt();funcionario.setAnoInicio(anoInicio);funcionarios.add(funcionario);System.out.println(Arrays.toString(funcionarios.toArray()));}publicstaticvoidmostrarCadastros(){
// Aqui eu gostaria de acessar o ArrayList do método cadastrarFuncionario.
System.out.println();}
public static void main(String[] args) {
//Trabalho trabalho = new Trabalho();
Para conseguir acessar a ArrayList no método " mostrarCadastros" é preciso colocar esse ArrayList como atributo da sua classe Trabalho e deixa todos os métodos declarados dessa classe como métodos de instância (remova o static).
mas de um modo geral recomendo você não usar métodos que utilizem o System.out.println, seria melhor você ter um método que retorna os cadastros, como:
assim fica a cargo de quem chamar manipular do modo que desejar.
S
silbrechlah
Eu tenho que retirar o Static?
Quando eu retiro, eu não consigo chamar nenhum método. Eu tentei acessar pelo this.funcionarios mas não consegui. Bom… o que vale é a tentativa.
publicclassTrabalho{List<Funcionario>funcionarios;publicTrabalho(){this.funcionarios=newArrayList<>();}publicstaticbyteopcao;publicvoidopcoes(){System.out.println("Escolha a opção desejada.");System.out.println("1 - Cadastrar Funcionário");System.out.println("2 - Cadastrar Gerente");System.out.println("3 - Remover Funcionário ou Gerente");System.out.println("4 - Mostrar Funcionários");System.out.println("5 - Calcular folha de pagamento");System.out.println("0 - Sair");Scannerinput=newScanner(System.in);System.out.print("Opção: ");opcao=input.nextByte();}publicvoidcadastrarFuncionario(){System.out.println("\n\tDados do Funcionário:");Funcionariofuncionario=newFuncionario();ScannerdadosFuncionario=newScanner(System.in);ArrayList<Funcionario>funcionarios=newArrayList<>();System.out.print("Nome Completo: ");Stringnome=dadosFuncionario.nextLine();funcionario.setNome(nome);funcionarios.add(funcionario);System.out.println(Arrays.toString(funcionarios.toArray()));}publicvoidmostrarCadastros(){System.out.println();}publicstaticvoidmain(String[]args){opcoes();// aqui dá erroswitch(opcao){case0:System.out.println("Obrigado por utilizar o nosso sistema.");break;case1:cadastrarFuncionario();System.out.println();Trabalho.main(args);break;
S
Satangozo1 like
Eu sinceramente sempre achei difícil de aprender quando o trabalho de declaração de métodos e atributos ficam na classe de execução… porque você não separa em duas camadas e faz como o amigo acima disse? é mais didático… tipo assim:
Se você quiser ainda fazer na força bruta, os atributos e os métodos que serão executados dentro do:
publicstaticvoidmain(String[]args){
deverão ser todos static tipo:
publicstaticvoidopcoes(){
publicstaticvoidcadastrarFuncionario(){
e o uso é assim:
Trabalho.opcoes();
Sabe porque eu disse força bruta? porque métodos e atributos static são guardados na classe durante toda a execução do programa como se fossem variáveis “globais”, e não somem quando o objeto é descartado… Pode ser que agora eu esteja falando um monte de bobagens que não representam seu objetivo atual, e ter ou não métodos e atributos globais não faça a minima diferença, mas em projetos reais isso faz um diferença enorme principalmente se vc partir pra WEB…