Informações

Tipo: Tutorial
Data de Publicação: 01/01/2004
Revisado em: 01/01/2004

Vote!

  • Currently 5,0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags Relacionadas

jsp

Comentários ( 1 )

Imprimir

Comandos Condicionais

por:

Ulisses Telemaco (ulisses@j2eebrasil.com.br)

Embora já possamos escrever algumas aplicações em JSP com o que já aprendemos até agora, elas serão ainda fracas. Um dos grandes potenciais de qualquer linguagem de programação, é a utilização de controles de fluxo (condicionais e loops) para executar diferentes partes de um programa baseado em testes. Nas próximas duas seções, aprenderemos os seguintes tópicos:

  • comandos condicionais;
  • comandos de loops.

Embora já possamos escrever algumas aplicações em JSP com o que já aprendemos até agora, elas serão ainda fracas. Um dos grandes potenciais de qualquer linguagem de programação, é a utilização de controles de fluxo (condicionais e loops) para executar diferentes partes de um programa baseado em testes. Nas próximas duas seções, aprenderemos os seguintes tópicos:

  • comandos condicionais;
  • comandos de loops.

Como foi dito em lições anteriores, o JSP nos permite construir páginas unindo HTML e comandos Java. Mostraremos nessa lição como utilizar as conhecidas rotinas condicionais do Java em páginas JSP. Três comandos serão tratadas a seguir: if.. else, operador condicional, switch.

Comando IF

Condicionais if contém a palavra-chave if, seguida de um teste booleano, e de uma instrução (na maioria das vezes um bloco de instruções) para ser executada se o teste for verdadeiro.

<html>
<body>

<%-- AS DUAS PROXIMAS LINHAS CRIA UMA VARIÁVEL 
QUE RECEBE O VALOR DA DATA ATUAL DO SERVIDOR --%>

<%
java.util.Date  dateNow  =  new java.util.Date();
int             hourNow  =  dateNow.getHours();
%>


<%-- AS PROXIMAS LINHAS MISTURA HTML E JAVA
E PRODUZ COMO RESULTADO UMA SAUDAÇÃO QUE DEPENDE DA HORA --%>

<% if ((hourNow >= 5) && (hourNow < 13)) { %>
<font face="verdana">Bom Dia!!!</font>

<% } else if ((hourNow >= 13) && (hourNow < 19)) { %>
< font face="verdana">Bom Tarde!!!</font>

<% } else if ((hourNow >= 19) && (hourNow < 24)) { %>
<font face="verdana">Bom Noite!!!</font>

<% } else	  { %>
<font face="verdana">Boa Madrugada!!!</font>
<% } %>

</body>
</html>

Operador Condicional

Uma alternativa para o uso das palavras-chaves if e else em uma instrução condicional é usar o operador condicional, algumas chamado de operador ternário.

O operador ternário é uma expressão, significando que ele devolve um valor (diferentemente do if mais geral, o qual pode resultar em qualquer instrução ou bloco sendo executado). O operador ternário é muito útil para condicionais muito curtos ou simples, e tem a seguinte formato:

test ? trueResult : falseResul

O teste é uma expressão que devolve true e false (semelhante ao teste da instrução if). Se o teste for verdadeiro retorna o valor de trueResult, caso contrário, devolve o valor de falseResult.

Vamos como podemos usar o operador condicional para obter o mesmo efeito do código anterior:

<html>
<body>

<%-- AS DUAS PROXIMAS LINHAS CRIA UMA VARIÁVEL 
QUE RECEBE O VALOR DA DATA ATUAL DO SERVIDOR --%>

<%
java.util.Date  dateNow  =  new java.util.Date();
int 		    hourNow  =  dateNow.getHours();
%>

<%
String mensagem;
mensagem = ((hourNow < 12)? "Onde você vai almoçar hoje?" : "Onde você almoçou hoje?");
%>
<font face="verdana">Olá, Tudo bem? <%= mensagem %></font>

</body>
</html>

Apesar deste código parecer, a uma primeira vista, um pouco menos fácil de entender que o anterior, ele é menor e portanto mais prático.

Condicionais Switch

Na instrução switch, o teste (um tipo primitivo de byte, char, short ou int) é comparado com cada valor em questão. Se um valor coincidente é achado, a instrução (ou instruções) depois do teste é executada. Se nenhum valor for encontrado, a instrução default é executada. Vamos analisar o exemplo abaixo:

<html>
<body>

<%-- AS DUAS PROXIMAS LINHAS CRIA UMA VARIÁVEL 
QUE RECEBE O VALOR DA DATA ATUAL DO SERVIDOR --%>

<%
java.util.Date dateNow  = new java.util.Date();
int 		   monthNow = (dateNow.getMonth()+1); 
%>

<%
String mes;

switch(monthNow){
case 1:  mes="Janeiro"; break;
case 2:  mes="Fevereiro"; break;
case 3:  mes="Março"; break;
case 4:  mes="Abril"; break;
case 5:  mes="Maio"; break;
case 6:  mes="Junho"; break;
case 7:  mes="Julho"; break;
case 8:  mes="Agosto"; break;
case 9:  mes="Setembro"; break;
case 10: mes="Outubro"; break;
case 11: mes="Novembro"; break;
default: mes="Dezembro"; break;
}
%>

<font face="verdana"> Nós estamos em <%= mes %></font>
	 
</body>
</html>

Esse código atribui a variável monthNow o valor do mês atual. Note que na instrução nós incrementamos o mês em uma unidade porque o método "getMonth()" retorna 0 para o mês de janeiro, 1 para fevereiro e assim por diante.

Observe que a limitação significativa no Java é que os testes e valores podem ser somente de tipos primitivos. Você não pode usar tipos primitivos maiores (long, float) ou objetos dentro de um switch, nem pode testar para nenhuma outra relação senão a igualdade. Isso limita a utilidade do switch para todos os casos exceto os mais simples, if´s aninhados podem funcionar para qualquer espécie de teste em qualquer tipo.

Comentários (1)

vc tem outras iformação sobre ferramentas java
postado por marina em 31/03/2007 às 23:21
Comente!

Observações

Os campos em negrito são obrigatórios.

Para evitar problemas, este espaço é moderado. Após o envio do comentário será necessário aguardar pela sua aprovação.