[DÚVIDA 4] if(variavel.equals("Texto")) {

22 respostas
LucasJavaTry

Olá novamente amigos;

Estou com um Problema : Estou fazendo um programa com importação JOptionPane , e coloquei um valor para uma variável com String e JOptionPane . Até aí tudo bem, mas eu quero que , quando eu colocar o “if(variavel.equals(“Texto”))” exista mais de um “Texto”, um “Texto2”.

Eu tentei usar || mas não dá certo… Como eu poderia arrumar isso ???

Obrigado!!!

22 Respostas

pmlm

Como é que usaste o || ?

E

Em português:

se a variável for igual a "texto" ou a variável for igual a "texto2"

Em Java:

if (variavel.equals ("Texto") || variavel.equals ("Texto2"))

Qual a sua verdadeira dificuldade? Estou achando que o valor da variável tem alguma sujeirinha que não deixou o teste rodar do jeito que você imaginou, pelo que imagino.

LucasJavaTry

Amigo, para evitar todas as dúvidas colocarei o programa (antes rodava perfeito , até colocar o || para mais opções) :

/**
 *
 * @author Lucas
 */
import javax.swing.JOptionPane;
public class ProjetoJOptionPane {
    public static void main(String[] args) {
        //Começo Tudo
   
        
              String a = JOptionPane.showInputDialog ("Voce e do Brasil???");
              if(a.equals("sim"	    ||	"Sim"	|| 	"SIM")){
               JOptionPane.showMessageDialog(null,"Legal , entao voce fala portugues") ;
             
              }
              else {
                  JOptionPane.showMessageDialog(null,"Entao você nao fala portugues") ;
        //Fim Tudo
              }
    }
}
S
LucasJavaTry:
pmlm:
Como é que usaste o || ?
Amigo, para evitar todas as dúvidas colocarei o programa (antes rodava perfeito , até colocar o || para mais opções) :
/**
 *
 * @author Lucas
 */
import javax.swing.JOptionPane;
public class ProjetoJOptionPane {
    public static void main(String[] args) {
        //Começo Tudo
   
        
              String a = JOptionPane.showInputDialog ("Voce e do Brasil???");
              if(a.equals("sim"	    ||	"Sim"	|| 	"SIM")){
               JOptionPane.showMessageDialog(null,"Legal , entao voce fala portugues") ;
             
              }
              else {
                  JOptionPane.showMessageDialog(null,"Entao você nao fala portugues") ;
        //Fim Tudo
              }
    }
}

O correto é:

/**
 *
 * @author Lucas
 */
import javax.swing.JOptionPane;
public class ProjetoJOptionPane {
    public static void main(String[] args) {
        //Começo Tudo
   
        
              String a = JOptionPane.showInputDialog ("Voce e do Brasil???");
              if(a.equals("sim")	    ||	a.equals("Sim")	|| 	a.equals("SIM"))){
               JOptionPane.showMessageDialog(null,"Legal , entao voce fala portugues") ;
             
              }
              else {
                  JOptionPane.showMessageDialog(null,"Entao você nao fala portugues") ;
        //Fim Tudo
              }
    }
}

Ainda sim seu if está muito feio :P

Rodrigo_Sasaki

Você pode fazer como o entanglement disse, mas como é sempre a mesma palavra, só muda se está em maiúsculo ou não, você pode usar um outro método.

o método equalsIgnoreCase, faz exatamente isso.

EDIT: lembre-se que usando o equalsIgnoreCase sempre que vierem a palavra “sim” independente de qual letra for maiúscula ou minúscula, ele retornara true. Ex: se o usuário digitar “siM” ele irá retornar true.

LucasJavaTry

Amigos , agora quero colocar a resposta não , colocando uma mensagem diferente , porque se alguém colocar “ÇALALALALAL” , por exemplo, falar : “Não entendi a mensagem” ;
(Eu penso que provavelmente colocar um 2º if e apenas 1 else . )

Obrigado !

S

É só você colocar um if que verifica se ele escreveu não e depois dele um else que mostra o sua mensagem dizendo que você não entendeu o que ele disse.

LucasJavaTry

Olá novamente amigos;

Não sei muito bem usar o comando “return”, mas quero que a pessoa que está usando , e colocar uma resposta sem lógica receba a mensagem e retorne para o “JOptionPane.showInputDialog” .

Obrigado!

S

LucasJavaTry:
Olá novamente amigos;

Não sei muito bem usar o comando “return”, mas quero que a pessoa que está usando , e colocar uma resposta sem lógica receba a mensagem e retorne para o “JOptionPane.showInputDialog” .

Obrigado!

Não entendi a sua duvida.

LucasJavaTry

Sem_Nome:
LucasJavaTry:
Olá novamente amigos;

Não sei muito bem usar o comando “return”, mas quero que a pessoa que está usando , e colocar uma resposta sem lógica receba a mensagem e retorne para o “JOptionPane.showInputDialog” .

Obrigado!

Não entendi a sua duvida.

Desculpe, Sem_Nome , tenho que avisá-lo de 2 coisas :
1 - Eu não entendi como fazer a parte do if e else que você falou, porque da erro, se eu coloco não, o else compila primeiro que o segundo if .

2 - Fiz “caca”, esqueci de colocar a dúvida ; quero saber como colocar para quem respondeu sem lógica um return para o input , e a mesma coisa para quem respondeu em nulo .

S

LucasJavaTry:
Sem_Nome:
LucasJavaTry:
Olá novamente amigos;

Não sei muito bem usar o comando “return”, mas quero que a pessoa que está usando , e colocar uma resposta sem lógica receba a mensagem e retorne para o “JOptionPane.showInputDialog” .

Obrigado!

Não entendi a sua duvida.

Desculpe, Sem_Nome , tenho que avisá-lo de 2 coisas :
1 - Eu não entendi como fazer a parte do if e else que você falou, porque da erro, se eu coloco não, o else compila primeiro que o segundo if .

2 - Fiz “caca”, esqueci de colocar a dúvida ; quero saber como colocar para quem respondeu sem lógica um return para o input , e a mesma coisa para quem respondeu em nulo .

Posta o seu codigo (com o erro no if).

nel

LucasJavaTry:
Olá novamente amigos;

Não sei muito bem usar o comando “return”, mas quero que a pessoa que está usando , e colocar uma resposta sem lógica receba a mensagem e retorne para o “JOptionPane.showInputDialog” .

Obrigado!

Use um laço de repetição. O do-while fará isso com tranquilidade.

R

usa o startsWith da String:

if(variavel.startsWith("Texto")){
   ..............
}

o startsWith verifica se a string começa com o a string passada como parâmetro.

LucasJavaTry

Gente , agora não entendi nada , só da erro . Meu código é :

/**
 *
 * @author Lucas
 */
import javax.swing.JOptionPane;
public class ProjetoJOptionPane {
    public static void main(String[] args) {
        //Começo Tudo
   
        do {
              String a = JOptionPane.showInputDialog ("Voce e do Brasil???");
	} while (a.equals(null)) || (a.equalsIgnoreCase("nao")) || (a.equalsIgnoreCase("não"))
	if(a.equalsIgnoreCase("sim")) {

               JOptionPane.showMessageDialog(null,"Legal , entao voce fala portugues") ;
             
              }
	else {
}
              if (a.equalsIgnoreCase("não")) || (a.equalsIgnoreCase("nao")) {
                  JOptionPane.showMessageDialog(null,"Entao você nao fala portugues") ;
        else {
	JOptionPane.showMessageDialog(null, "Nao entendi, repita por favor) ;
             //Fim Tudo
              }
    }
}

Obrigado!!!

nel

Que bagunça hein ?
Faça sem o do-while, primeiramente. Depois de sua lógica funcionar, apenas aplique-o. Pense com calma, você quer verificar se o usuário digitou sim ou não, qualquer coisa diferente disso deve ser inválida. Algo como:

String a = JOptionPane.showInputDialog ("Voce e do Brasil???");  
    if(a.equalsIgnoreCase("sim")) {    
        JOptionPane.showMessageDialog(null,"Legal , entao voce fala portugues") ;               
    }  else if (a.equalsIgnoreCase("não")) {  
        JOptionPane.showMessageDialog(null,"Entao você nao fala portugues") ;  
     } else {  
        JOptionPane.showMessageDialog(null, "Nao entendi, repita por favor") ;  
    }

Viu ? Agora é pensar em como aplicar o do-while nesse código. E uma dica, não faça a.equals(null). Se é é null mesmo, ele vai dar NullPointerException. null é diferente de “null” (isso é uma String!).

ErickRAR

Pode também simplificar um pouco.

String a = JOptionPane.showInputDialog ("English Motherf***r Do You Speak It???");    
		String mensagem = "";
		if(a.equalsIgnoreCase("yes"))       
			mensagem = " So now you know";
		else if (a.equalsIgnoreCase("no"))    
			mensagem = "You read the Bible, Brett?";    
		else     
			mensagem =  "Say 'what' again. I dare you";    
	
	    JOptionPane.showMessageDialog(null,mensagem) ;
LucasJavaTry

nel:
Que bagunça hein ?
Faça sem o do-while, primeiramente. Depois de sua lógica funcionar, apenas aplique-o. Pense com calma, você quer verificar se o usuário digitou sim ou não, qualquer coisa diferente disso deve ser inválida. Algo como:

String a = JOptionPane.showInputDialog ("Voce e do Brasil???");  
    if(a.equalsIgnoreCase("sim")) {    
        JOptionPane.showMessageDialog(null,"Legal , entao voce fala portugues") ;               
    }  else if (a.equalsIgnoreCase("não")) {  
        JOptionPane.showMessageDialog(null,"Entao você nao fala portugues") ;  
     } else {  
        JOptionPane.showMessageDialog(null, "Nao entendi, repita por favor") ;  
    }

Viu ? Agora é pensar em como aplicar o do-while nesse código. E uma dica, não faça a.equals(null). Se é é null mesmo, ele vai dar NullPointerException. null é diferente de “null” (isso é uma String!).

Obrigado nel , agora estou entendendo.

LucasJavaTry

Sim , mas meu exercício pede : "Use o return " …

Obrigado

Rodrigo_Sasaki

LucasJavaTry:
Sim , mas meu exercício pede : "Use o return " …

Obrigado


E qual o problema de usar o return?

E

Se seu problema pede “use o return”, provavelmente ele está imaginando que você queira fazer uma de duas coisas:

  • Ou implemente sua lógica em um método separado, que será chamado a partir do main,
    ou
  • Saia antes do final do main, usando o return.

Não sei como é o enunciado completo do seu problema.

LucasJavaTry

Olá novamente;
Consegui arrumar usando return , agora quero colocar um numero máximo de caracteres , 3 .

Obrigado!!!

nel

LucasJavaTry:
Olá novamente;
Consegui arrumar usando return , agora quero colocar um numero máximo de caracteres , 3 .

Obrigado!!!

Eu quero ir viajar para a Europa e trabalhar por lá, uns 2 anos, tá bom já ! :smiley:
Vai ler o javadoc da String.

Criado 25 de junho de 2012
Ultima resposta 25 de jun. de 2012
Respostas 22
Participantes 8