Como armazenar em uma lista de objeto no java

Vc deve colocar a classe Cadastro em um arquivo separado chamado Cadastro.java.

Então seria esta parte toda abaixo em uma classe cadastro.java, isto, iniciando com uma public class?

1 curtida

Agora sim rodou beleza, o que falta agora é armazenar estes dados no objeto para poder recuperar a informação e a saída do loop para uma nova digitação de outro dado.
como faço isto?

para a saída do loop e habilitar edição de um novo cadastro preciso digitar sair no cpf para iniciar outro cadastro e armazena-lo.

tenho um código aqui mas não sei se é o ideal e como implementa-lo, ou se este é o ideal.

package Controle;

import java.util.Scanner;

//ao digitar a palavra "sair" o programa encerra o código!;
public class WhileIndeterminado {
	public static void main(String[] args) {
		Scanner entrada = new Scanner(System.in);
	
		String valor = "";
		
		while(!valor.equals("sair")) {
			System.out.println("Digite alguma coisa: ");
			valor = entrada.nextLine();
		}

Como vc tem toda a leitura pronta no método main. Tu pode simplesmente extrair esse código para um método separado e retornar o cadastro criado, e armazenar numa lista, veja:

O exemplo a seguir será feito na classe MAPA_PS_A1

public class MAPA_PS_A1 {

  public static void main(String[] args) {
    List<Cadastro> cadastros = new ArrayList<>();
    String valor;

    do {
      System.out.println("Deseja realizar um cadastro? (Digite S ou N para continuar)");
      valor = entrada.nextLine();

      if ("s".equalsIgnoreCase(valor)) {
        Cadastro cadastroCriado = criarCadastro();
        cadastros.add(criarCadastro);
      } else {
        System.out.println("Opção inválida!");
      }
    } while (!"n".equalsIgnoreCase(valor));
  }

  public static Cadastro criarCadastro() {
    Cadastro cadastro = new Cadastro();

    // aqui vai todo aquele código que vc fez para criar e preencher o Cadastro e imprimir os valores

    return cadastro;
  }
}

Veja inseri desta forma como segue abaixo o código, mas agora dá um erro e não roda, veja se fiz da forma correta. veja o erra abaixo antes do código que inseri.
Erro:

run:
Exception in thread "main" java.lang.RuntimeException: Uncompilable code - cannot find symbol
  symbol:   class List
  location: class mapa_ps_a1.MAPA_PS_A1
	at mapa_ps_a1.MAPA_PS_A1.main(MAPA_PS_A1.java:1)
C:\Users\sidne\AppData\Local\NetBeans\Cache\12.5\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\sidne\AppData\Local\NetBeans\Cache\12.5\executor-snippets\run.xml:68: Java returned: 1
BUILD FAILED (total time: 9 seconds)

código:

package mapa_ps_a1;

/**
 * @author sidney
 */

import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

public class MAPA_PS_A1 {

    private static Object entrada;
    public static void main(String[] args) {
        
    List<Cadastro> cadastros = new ArrayList<>();
    String valor;

    do {
      System.out.println("Deseja realizar um cadastro? (Digite S ou N para continuar)");
      valor = entrada.nextLine();

      if ("s".equalsIgnoreCase(valor)) {
        Cadastro cadastroCriado = criarCadastro();
        Cadastro criarCadastro = null;
        cadastros.add(criarCadastro);
      } else {
        System.out.println("Opção inválida!");
      }
    } while (!"n".equalsIgnoreCase(valor));
  }

  public static Cadastro criarCadastro() {
    Cadastro cadastro = new Cadastro();
		
	String iniciar = JOptionPane.showInputDialog(
            "Olá. Para iniciar o cadastro aperte enter");
		
	String cpf = JOptionPane.showInputDialog("Digite o CPF");
        cadastro.setCpf(cpf);
	String nome = JOptionPane.showInputDialog("Digite o seu nome");
        cadastro.setNome(nome);
	String sexo = JOptionPane.showInputDialog("Digite m para masculino ou f para feminino");
        cadastro.setSexo(sexo);
	String idade = JOptionPane.showInputDialog("Digite sua idade");
        cadastro.setIdade(idade);
	String febre = JOptionPane.showInputDialog("Tem febre? n nao, s sim");
        cadastro.setFebre(febre);
	String dorCabeca = JOptionPane.showInputDialog("Tem dor de cabeça? n nao, s sim");
        cadastro.setDorCabeca(dorCabeca);
	String secrNasEsp = JOptionPane.showInputDialog("Tem secreção nasal ou espirros? n não, s sim");
        cadastro.setSecrNasEsp(secrNasEsp);
	String dorIrritacao = JOptionPane.showInputDialog("Tem dor/irritação na garganta? n não, s sim");
        cadastro.setDorIrritacao(dorIrritacao);
	String tosseSeca = JOptionPane.showInputDialog("Tem tosse seca? n não, s sim");
        cadastro.setTosseSeca(tosseSeca);
	String difResp = JOptionPane.showInputDialog("Tem dificuldade respiratória? n não, s sim");
        cadastro.setDifResp(difResp);
	String doresCorpo = JOptionPane.showInputDialog("Tem dores no corpo? n não, s sim");
        cadastro.setDoresCorpo(doresCorpo);
	String diarreia = JOptionPane.showInputDialog("Tem diarreia? n não, s sim");
        cadastro.setDiarreia(diarreia);
	String contato = JOptionPane.showInputDialog("Esteve em contato, nos últimos 14 dias, com um caso diagnosticado com COVID-19? n não, s sim");
        cadastro.setContato(contato);
	String locais = JOptionPane.showInputDialog("Esteve em locais com grande aglomeração? n não, s sim");
        cadastro.setLocais(locais);
        
       
    System.out.println("Cpf: " + cadastro.getCpf());
    System.out.println("Nome: " + cadastro.getNome());
    System.out.println("Sexo: " + cadastro.getSexo());
    System.out.println("Idade: " + cadastro.getIdade());
    System.out.println("Febre: " + cadastro.getFebre());
    System.out.println("DorCabeca: " + cadastro.getDorCabeca());
    System.out.println("secrNasEsp: " + cadastro.getSecrNasEsp());
    System.out.println("DorIrritacao: " + cadastro.getDorIrritacao());
    System.out.println("TosseSeca: " + cadastro.getTosseSeca());
    System.out.println("DifResp: " + cadastro.getDifResp());
    System.out.println("DoresCorpo: " + cadastro.getDoresCorpo());
    System.out.println("Diarreia: " + cadastro.getDiarreia());
    System.out.println("Contato: " + cadastro.getContato());
    System.out.println("Locais: " + cadastro.getLocais());
    
    System.out.println("A soma dos pontos é " + cadastro.getSoma());
         
   
	int soma = cadastro.getSoma();
        
        if (soma <= 9) {
		System.out.println("O paciente deverá ser encaminhado para a ala de risco baixo");	
            }else if(soma >=10 && soma <= 19) {
		System.out.println("O paciente deverá ser encaminhado para a ala de risco médio");	
            }else {
		System.out.println("O paciente deverá ser encaminhado para a ala de risco alto");
	}
    
return cadastro;
  }
   	
}

Tem alguns pontos que estão errados:

Pode remover essa linha: private static Object entrada; (não entendi o pq dessa linha)


Isso tb não precisa: Cadastro criarCadastro = null;


Na linha cadastros.add(criarCadastro); vc deve adicionar a variável que está sendo retornada pelo método criarCadastro. Deve ficar assim:

Cadastro cadastroCriado = criarCadastro();
cadastros.add(cadastroCriado);

Não precisaria ter criado Cadastro criarCadastro = null, pq o cadastro criado já é retornado pelo método criarCadastro.


Faça essas correções e veja se funciona.

Refiz como indicou, retirei as linhas e adicionei corretamente criar Cadastro, porem fica ainda dando erro como a seguir:

run:
Exception in thread "main" java.lang.RuntimeException: Uncompilable code - cannot find symbol
  symbol:   variable entrada
  location: class mapa_ps_a1.MAPA_PS_A1
	at mapa_ps_a1.MAPA_PS_A1.main(MAPA_PS_A1.java:1)
C:\Users\sidne\AppData\Local\NetBeans\Cache\12.5\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\sidne\AppData\Local\NetBeans\Cache\12.5\executor-snippets\run.xml:68: Java returned: 1
BUILD FAILED (total time: 5 seconds)

E no código na linha: valor = entrada.nextLine(); Informa que não encontrou a variável entrada

Na linha: List<Cadastro> cadastros = new ArrayList<>(); Informa que a coleção esta apenas adicionada para nunca ser lida

Na linha:

String iniciar = JOptionPane.showInputDialog("Olá. Para iniciar o cadastro aperte enter"); 

Onde antes lia o iniciar, agora a informação é que a variavel iniciar nunca é lida.

O código após as auterações que vc indicou ficou assim:

package mapa_ps_a1;

/**
 * @author sidney
 */

import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

public class MAPA_PS_A1 {

    public static void main(String[] args) {
        
    List<Cadastro> cadastros = new ArrayList<>();
    String valor;

    do {
      System.out.println("Deseja realizar um cadastro? (Digite S ou N para continuar)");
      valor = entrada.nextLine();

      if ("s".equalsIgnoreCase(valor)) {
        Cadastro cadastroCriado = criarCadastro();
        cadastros.add(cadastroCriado); 
      } else {
        System.out.println("Opção inválida!");
      }
    } while (!"n".equalsIgnoreCase(valor));
  }

  public static Cadastro criarCadastro() {
    Cadastro cadastro = new Cadastro();
		
	String iniciar = JOptionPane.showInputDialog(
            "Olá. Para iniciar o cadastro aperte enter");
		
	String cpf = JOptionPane.showInputDialog("Digite o CPF");
        cadastro.setCpf(cpf);
	String nome = JOptionPane.showInputDialog("Digite o seu nome");
        cadastro.setNome(nome);
	String sexo = JOptionPane.showInputDialog("Digite m para masculino ou f para feminino");
        cadastro.setSexo(sexo);
	String idade = JOptionPane.showInputDialog("Digite sua idade");
        cadastro.setIdade(idade);
	String febre = JOptionPane.showInputDialog("Tem febre? n nao, s sim");
        cadastro.setFebre(febre);
	String dorCabeca = JOptionPane.showInputDialog("Tem dor de cabeça? n nao, s sim");
        cadastro.setDorCabeca(dorCabeca);
	String secrNasEsp = JOptionPane.showInputDialog("Tem secreção nasal ou espirros? n não, s sim");
        cadastro.setSecrNasEsp(secrNasEsp);
	String dorIrritacao = JOptionPane.showInputDialog("Tem dor/irritação na garganta? n não, s sim");
        cadastro.setDorIrritacao(dorIrritacao);
	String tosseSeca = JOptionPane.showInputDialog("Tem tosse seca? n não, s sim");
        cadastro.setTosseSeca(tosseSeca);
	String difResp = JOptionPane.showInputDialog("Tem dificuldade respiratória? n não, s sim");
        cadastro.setDifResp(difResp);
	String doresCorpo = JOptionPane.showInputDialog("Tem dores no corpo? n não, s sim");
        cadastro.setDoresCorpo(doresCorpo);
	String diarreia = JOptionPane.showInputDialog("Tem diarreia? n não, s sim");
        cadastro.setDiarreia(diarreia);
	String contato = JOptionPane.showInputDialog("Esteve em contato, nos últimos 14 dias, com um caso diagnosticado com COVID-19? n não, s sim");
        cadastro.setContato(contato);
	String locais = JOptionPane.showInputDialog("Esteve em locais com grande aglomeração? n não, s sim");
        cadastro.setLocais(locais);
        
       
    
    System.out.println("Cpf: " + cadastro.getCpf());
    System.out.println("Nome: " + cadastro.getNome());
    System.out.println("Sexo: " + cadastro.getSexo());
    System.out.println("Idade: " + cadastro.getIdade());
    System.out.println("Febre: " + cadastro.getFebre());
    System.out.println("DorCabeca: " + cadastro.getDorCabeca());
    System.out.println("secrNasEsp: " + cadastro.getSecrNasEsp());
    System.out.println("DorIrritacao: " + cadastro.getDorIrritacao());
    System.out.println("TosseSeca: " + cadastro.getTosseSeca());
    System.out.println("DifResp: " + cadastro.getDifResp());
    System.out.println("DoresCorpo: " + cadastro.getDoresCorpo());
    System.out.println("Diarreia: " + cadastro.getDiarreia());
    System.out.println("Contato: " + cadastro.getContato());
    System.out.println("Locais: " + cadastro.getLocais());
    
    System.out.println("A soma dos pontos é " + cadastro.getSoma());
         
   
	int soma = cadastro.getSoma();
        
        if (soma <= 9) {
		System.out.println("O paciente deverá ser encaminhado para a ala de risco baixo");	
            }else if(soma >=10 && soma <= 19) {
		System.out.println("O paciente deverá ser encaminhado para a ala de risco médio");	
            }else {
		System.out.println("O paciente deverá ser encaminhado para a ala de risco alto");
	}
    
return cadastro;
  }
   	
}

Para essa parte:

valor = entrada.nextLine();

Onde vc declarou e iniciou a variável entrada?

não declarei, deveria declarar onde no cadastro.java ou em outro lugar?

No cadastro não. Veja que a classe Cadastro, no seu programa, serve única e exclusivamente para juntar os dados referentes ao cadastro. Quem irá fazer o processamento, direcionar as coisas, é a classe que tem o método main. Vc pode declarar antes da declaração da lista:

Scanner entrada = new Scanner(System.in);
List<Cadastro> cadastros = new ArrayList<>();

Agora achei estranho o programa usar esses 2 tipos de entrada: Scanner (console) e JOptionPane (gráfica). Vc poderia escolher apenas um ou o outro para usar.

Ótimo agora ta funcionando entro com o cadastro ai ele solicita que quero fazer novo cadastro se digit s ele inicia outro cadastro, porem se não quero fazer outro cadastro e digito não ele informa opção inválida e sai do sistema.

Apenas acho que não está conforme o solicitado, veja ai o trecho final que mandei para vc do roteiro do trabalho que esta na reposta 16.

Após preenchimento do questionário, é preciso indicar para qual ala o paciente deverá se dirigir.
Após a finalização do atendimento, os dados deverão ser armazenados em uma lista de objeto e o programa deverá esperar a entrada de dados de um novo paciente.
Para sair do programa, o operador deverá digitar SAIR, no campo CPF de um novo atendimento.

Boa noite Lucas, aquele trabalho acima que me ajudou ficou maravilhoso, rodou tudo certinho e aprendi bastante.
tenho um outro pepino para descascar para o fechamento das minhas notas está faltando 4 pontos e este outro trabalho vale 5 fiz quase todo mas acho que esta com erros, não consigo acertar estou batendo cabeça a uns 4 dias. Poderia mais uma vez me auxiliar, tenho que entregar amanhã até as 23:59. vou mandar o que a atividade pede e o que eu fiz até agora. se puder me adicionar no whats e me contactar seria melhor, até pago por isto se for o caso. meu Whats é: 11 98196-2619