Pessoal, boa noite. Eu tenho dois algoritmos muito parecidos abaixo. O primeiro funciona, já o segundo não. Fiz somente uma modificação no segundo algoritmo na instrução while mas não entendi porque ele não continua dentro do while mesmo a instrução continuando como verdadeira (pelo menos eu acho que está retornando true):
Algoritmo 1:
Blockquote
import javax.swing.JOptionPane;
public class Algoritmo1{
public static void main(String[] args) {
boolean nome_valido = false;
String n = "";
while(nome_valido == false) {
n = JOptionPane.showInputDialog("Informe seu nome");
if (n == null)System.exit(0);
if (n.length() < 5 || n.length() > 50) {
JOptionPane.showMessageDialog(null, "Nome inválido");
}else if (
n.contains("0") |
n.contains("1") |
n.contains("2") |
n.contains("3") |
n.contains("4") |
n.contains("5") |
n.contains("6") |
n.contains("7") |
n.contains("8") |
n.contains("9")) {
JOptionPane.showMessageDialog(null, "Não pode ter número");
}
else nome_valido = true;
}
JOptionPane.showMessageDialog(null, "Nome válido: " + n);
System.exit(0);
}
}
Blockquote
Algoritmo 2:
Blockquote
import javax.swing.JOptionPane;
public class C0811Teste {
public static void main(String[] args) {
String n = "";
while(n == "" || n == null) {
n = JOptionPane.showInputDialog("Informe seu nome");
if (n == null)System.exit(0);
if (n.length() < 5 || n.length() > 50) {
JOptionPane.showMessageDialog(null, "Nome inválido");
}else if (
n.contains("0") |
n.contains("1") |
n.contains("2") |
n.contains("3") |
n.contains("4") |
n.contains("5") |
n.contains("6") |
n.contains("7") |
n.contains("8") |
n.contains("9")) {
JOptionPane.showMessageDialog(null, "Não pode ter número");
}
}
JOptionPane.showMessageDialog(null, "Nome válido: " + n);
System.exit(0);
}
}
Blockquote
Ao deixar em branco o nome, somente pressionando o OK, eu não fico dentro do while até ter um nome válido.
Obrigado.