JOptionPane vs System.out.println

Pessoal,

Eu estou tentando colocar mensagens na saída, coloquei o JOptionPane para perguntar ao usuário e em casos de erros, e coloquei Sysout para estar gravado e visualizar.


Segue o código:

 package com.camila.cursojava.aula17.labs;

import java.text.NumberFormat;
import javax.swing.JOptionPane;

public class Exer03 {
public static void main(String[] args) {

	boolean dados = false;
	String name, sexo, estadoCivil;
	int idade;
	double salario;
	NumberFormat nf = NumberFormat.getCurrencyInstance();
	
	dados = false;
	do {
		name = String.valueOf(JOptionPane.showInputDialog(null, "Digite o nome."));
		if(name.length() >= 3) {
			dados = true;
		} else {
			JOptionPane.showMessageDialog(null, "O nome precisa no mínimo 3 caracteres.");
		}
	} while(!dados);
	
	dados = false;
	do {
		idade = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a idade."));
		
		if(idade > 0 && idade <= 120) {
			dados = true;
		}  else {
			JOptionPane.showMessageDialog(null, "A idade está inválida.");
		}
	} while (!dados);
	
	dados = false;
	do {
		salario = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o salario."));
		if(salario > 300) {
			dados = true;
		} else {
			JOptionPane.showMessageDialog(null, "O salário está inválido. Precisa ser acima de 300");
		}
	} while(!dados);
	
	dados = false;	
	do {
		sexo = String.valueOf(JOptionPane.showInputDialog(null, "Digite o sexo."));
		
		if(sexo.equalsIgnoreCase("f")) {
			dados = true;
			System.out.println("Feminino");
			//JOptionPane.showMessageDialog(null, "Feminino");
		} else if (sexo.equalsIgnoreCase("m")){
			dados = true;
			System.out.println("Masculino");
			//JOptionPane.showMessageDialog(null, "Masculino");
		} else {
			dados = false;
			JOptionPane.showMessageDialog(null, "O dado está inválido. Tente novamente.");
		}
	} while(!dados);
	
	dados = false;
	do {
		estadoCivil = String.valueOf(JOptionPane.showInputDialog(null, "Digite o estado civil: [S]olteiro [C]asado [D]ivorciado ou [V]iuvo."));
		if(estadoCivil.equalsIgnoreCase("S")) {
			dados = true;
			System.out.println("Solteiro");
			//JOptionPane.showMessageDialog(null, "Solteiro");
		} else if(estadoCivil.equalsIgnoreCase("C")) {
			dados = true;
			System.out.println("Casado");
			//JOptionPane.showMessageDialog(null, "Casado");
		} else if(estadoCivil.equalsIgnoreCase("D")) {
			dados = true;
			System.out.println("Divorciado");
			//JOptionPane.showMessageDialog(null, "Divorciado");
		} else if(estadoCivil.equalsIgnoreCase("V")) {
			dados = true;
			System.out.println("Viúvo");
			//JOptionPane.showMessageDialog(null, "Viúvo");
		} else {
			dados = false;
			JOptionPane.showMessageDialog(null, "O valor está inválido. Digite novamente.");
		}
	} while(!dados);
	
	System.out.println("Nome: " + name);
	System.out.println("Idade: " + idade);
	System.out.println("Salário " + nf.format(salario));
	System.out.println("Sexo: " + sexo); **-> aqui deve aparecer 'Feminino' ou 'Masculino'**
	System.out.println("Estado Civil: " + estadoCivil); **-> aqui também tem que aparecer 'Solteiro', 'Casado', 'Divorciado' ou 'Viuvo'**
}

}

Aqui é a saída que aparece:
Nome: Sarah
Idade: 25
Salário R$4.500,00
Sexo: F -> aqui deveria aparecer 'Feminino’
Estado Civil: C -> e aqui em ‘Casado’

No seu teste, você inseriu apenas f ou figitou feminino?

Olá @dms775,

Então a minha pretensão é que o usuário possa digitar ‘f’ ou ‘m’, mas na saída tem que sair ‘Feminino’ que corresponda aos caracteres ‘f’ ou ‘F’.

Você não alterou os valores de sexo e estadoCivil nos ifs

Vou alterar, valeu! :+1:

Não implemente todo o programa dentro de um único método, separe em partes menores que tudo fica mais fácil e legível, veja:

import java.text.NumberFormat;

import javax.swing.JOptionPane;

public class Exer03 {

    public static void main(String[] args) {
        Exer03 programa = new Exer03();
        programa.executar();
    }

    public void executar() {
        String name = lerNome();
        int idade = lerIdade();
        double salario = lerSalario();
        String sexo = lerSexo();
        String estadoCivil = lerEstadoCivil();

        System.out.println("Nome: " + name);
        System.out.println("Idade: " + idade);
        NumberFormat formatador = NumberFormat.getCurrencyInstance();
        System.out.println("Salário " + formatador.format(salario));
        System.out.println("Sexo: " + sexo);
        System.out.println("Estado Civil: " + estadoCivil);
    }

    private String lerEstadoCivil() {
        while (true) {
            String estadoCivil = String.valueOf(JOptionPane.showInputDialog(null, "Digite o estado civil: [S]olteiro [C]asado [D]ivorciado ou [V]iuvo."));
            if ("S".equalsIgnoreCase(estadoCivil)) {
                return "Solteiro";
            }
            if ("C".equalsIgnoreCase(estadoCivil)) {
                return "Casado";
            }
            if ("D".equalsIgnoreCase(estadoCivil)) {
                return "Divorciado";
            }
            if ("V".equalsIgnoreCase(estadoCivil)) {
                return "Viúvo";
            }
            JOptionPane.showMessageDialog(null, "O valor está inválido. Digite novamente.");
        }
    }

    private int lerIdade() {
        while (true) {
            int idade = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a idade."));
            if (idade > 0 && idade <= 120) {
                return idade;
            }
            JOptionPane.showMessageDialog(null, "A idade está inválida.");
        }
    }

    private String lerNome() {
        while (true) {
            String nome = JOptionPane.showInputDialog(null, "Digite o nome.");
            if (nome.length() >= 3) {
                return nome;
            }
            JOptionPane.showMessageDialog(null, "O nome precisa no mínimo 3 caracteres.");
        }
    }

    private double lerSalario() {
        while (true) {
            double salario = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o salario."));
            if (salario > 300) {
                return salario;
            }
            JOptionPane.showMessageDialog(null, "O salário está inválido. Precisa ser acima de 300");
        }
    }

    private String lerSexo() {
        while (true) {
            String sexo = JOptionPane.showInputDialog(null, "Digite o sexo.");
            if ("f".equalsIgnoreCase(sexo)) {
                return "Feminino";
            }
            if ("m".equalsIgnoreCase(sexo)) {
                return "Masculino";
            }
            JOptionPane.showMessageDialog(null, "O dado está inválido. Tente novamente.");
        }
    }
}
1 curtida

Valeu @staroski! Fiz do jeito que você passou e deu certo. :clap:

1 curtida