Como é para funcionar o programa:
1- pedir o nome do usuário com a seguinte pergunta: Qual é o seu nome:
2- pedir para o usuário confirmar se o nome que está na tela está correto, fazendo a seguinte pergunta: Seu nome é nome digitado.
3- Se o usuário clicar no botão “YES”, executa um if com a mensagem: Bem-vindo nome digitado à Programação Java!
4- Se o usuário clicar no botão “NO”, executa um if pedindo para que o usuário digite novamente seu nome. Mostrando na tela seu nome, dessa vez o nome correto do usuário.
Obs.: Os comandos ifs não estão sendo executados.
Código do programa:
// Obtendo a entrada de usuário a partir de um diálogo.
import javax.swing.JOptionPane;
public class NomeDialogo
{
public static void main(String[] args)
{
// variáveis
String nome1,
nome2,
confirmacao,
mensagem1,
mensagem2;
// pede para o usuário inserir seu nome
nome1 = JOptionPane.showInputDialog("Qual é o seu nome: ");
// pergunta para o usuário se o seu nome é realmente o digitado
confirmacao = String.format("Seu nome é %s?", nome1);
JOptionPane.showConfirmDialog(null, confirmacao);
if (confirmacao == "YES")
{
// cria a mensagem
mensagem1 = String.format("Bem-vindo %s à Programação Java!", nome1);
//exibe a mensagem para cumprimentar o usuário pelo nome
JOptionPane.showMessageDialog(null, mensagem1);
}
if (confirmacao == "NO")
{
// pede para o usuário inserir seu nome novamente
nome2 = JOptionPane.showInputDialog("Digite novamente seu nome: ");
// cria a mensagem
mensagem2 = String.format("Bem-vindo %s à Programação Java!", nome2);
//exibe a mensagem para cumprimentar o usuário pelo nome
JOptionPane.showMessageDialog(null, mensagem2);
}
} // fim do método main
} // fim da classe NomeDialogo
Não compare String usando ==. Em vez disso, use o método equals:
if ("YES".equals(confirmarcao)) {
Ao usar o ==, vc estará comparando a referência da String (que é um objeto e não um tipo primitivo). Com o equals será comparado o conteúdo da String.
Além do que o Lucas apontou, vc precisa também guardar o valor retornado pelo método showConfirmDialog()
.
É ele que vai te dizer a resposta que o usuário deu. 0 para “yes”, 1 para “no” e 2 para “cancel”. Então vc faria algo assim:
int resposta = JOptionPane.showConfirmDialog(null, confirmacao);
if (resposta == 0) {
// Sim
} else if (resposta == 1) {
// Não
} else {
// Usuário clicou em Cancel(2) ou apertou a tecla ESC(-1)
}
Daria para simplificar um pouco seu código usando while
, olha só:
import javax.swing.JOptionPane;
public class App {
public static void main(String... args) {
String nome = JOptionPane.showInputDialog("Qual é o seu nome?");
while (true) {
String mensagem = "Seu nome é " + nome + "?";
int resposta = JOptionPane.showConfirmDialog(null, mensagem, "Confirmação", JOptionPane.YES_NO_OPTION);
if (resposta == 0) {
JOptionPane.showMessageDialog(null, "Bem-vindo, " + nome + ", à Programação Java!");
break;
} else {
nome = JOptionPane.showInputDialog("Digite novamente seu nome: ");
}
}
}
}
1 curtida
Fiz a seguinte modificação:
// Obtendo a entrada de usuário a partir de um diálogo.
import javax.swing.JOptionPane;
public class NomeDialogo
{
public static void main(String[] args)
{
// variáveis
String nome1,
nome2,
confirmacao,
mensagem1,
mensagem2;
// pede para o usuário inserir seu nome
nome1 = JOptionPane.showInputDialog("Qual é o seu nome: ");
// pergunta para o usuário se o seu nome é realmente o digitado
confirmacao = String.format("Seu nome é %s?", nome1);
JOptionPane.showConfirmDialog(null, confirmacao);
if ("YES".equals(confirmacao))
{
// cria a mensagem
mensagem1 = String.format("Bem-vindo %s à Programação Java!", nome1);
//exibe a mensagem para cumprimentar o usuário pelo nome
JOptionPane.showMessageDialog(null, mensagem1);
}
if ("NO".equals(confirmacao))
{
// pede para o usuário inserir seu nome novamente
nome2 = JOptionPane.showInputDialog("Digite novamente seu nome: ");
// cria a mensagem
mensagem2 = String.format("Bem-vindo %s à Programação Java!", nome2);
//exibe a mensagem para cumprimentar o usuário pelo nome
JOptionPane.showMessageDialog(null, mensagem2);
}
} // fim do método main
} // fim da classe NomeDialogo
Obs.: O programa ainda não executa os comandos ifs.
@wldomiciano eu gostaria de manter os comandos ifs, pois sou iniciante.
Aplicando a seguinte linha de comando:
int resposta = JOptionPane.showConfirmDialog(null, confirmacao);
Ainda os comandos ifs não são executados.
Posso ver como ficou o código final?
// Obtendo a entrada de usuário a partir de um diálogo.
import javax.swing.JOptionPane;
public class NomeDialogo
{
public static void main(String[] args)
{
// variáveis
String nome1,
nome2,
confirmacao,
mensagem1,
mensagem2;
int resposta;
// pede para o usuário inserir seu nome
nome1 = JOptionPane.showInputDialog("Qual é o seu nome: ");
// pergunta para o usuário se o seu nome é realmente o digitado
confirmacao = String.format("Seu nome é %s?", nome1);
resposta = JOptionPane.showConfirmDialog(null, confirmacao);
if ("YES".equals(confirmacao))
{
// cria a mensagem
mensagem1 = String.format("Bem-vindo %s à Programação Java!", nome1);
//exibe a mensagem para cumprimentar o usuário pelo nome
JOptionPane.showMessageDialog(null, mensagem1);
}
if ("NO".equals(confirmacao))
{
// pede para o usuário inserir seu nome novamente
nome2 = JOptionPane.showInputDialog("Digite novamente seu nome: ");
// cria a mensagem
mensagem2 = String.format("Bem-vindo %s à Programação Java!", nome2);
//exibe a mensagem para cumprimentar o usuário pelo nome
JOptionPane.showMessageDialog(null, mensagem2);
}
} // fim do método main
} // fim da classe NomeDialogo
Moço, lê minha resposta, eu sugeri mudar os ifs para isso:
int resposta = JOptionPane.showConfirmDialog(null, confirmacao);
if (resposta == 0) {
// Sim
} else if (resposta == 1) {
// Não
} else {
// Usuário clicou em Cancel(2) ou apertou a tecla ESC(-1)
}
Do jeito que vc tá fazendo seus ifs nunca serão executados, pois vc está testando se confirmacao
é igual a “YES” ou “NO”, só que confirmacao é igual a ““Seu nome é XXX?””
1 curtida
@wldomiciano teria uma possibilidade de usar somente os comandos ifs?
Teria sim, olha como ficaria:
import javax.swing.JOptionPane;
public class NomeDialogo {
public static void main(String[] args) {
String nome1,
nome2,
confirmacao,
mensagem1,
mensagem2;
int resposta;
nome1 = JOptionPane.showInputDialog("Qual é o seu nome: ");
confirmacao = String.format("Seu nome é %s?", nome1);
resposta = JOptionPane.showConfirmDialog(null, confirmacao);
if (resposta == 0) {
mensagem1 = String.format("Bem-vindo %s à Programação Java!", nome1);
JOptionPane.showMessageDialog(null, mensagem1);
}
if (resposta == 1) {
nome2 = JOptionPane.showInputDialog("Digite novamente seu nome: ");
mensagem2 = String.format("Bem-vindo %s à Programação Java!", nome2);
JOptionPane.showMessageDialog(null, mensagem2);
}
}
}
Do seu código original eu só removi os comentários para ficar menos poluído.