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?
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