comparaçao aborrecida

6 respostas
proteus_adi

seguinte...
eu tenho o código[estou na escola agora]:

<%
String nome = (String) request.getParameter("tNome");
String nulo = "null";

if (nome == nulo ){
   throw new exception .....
   }
%>

a questão é, por default , se não tem o parametro tNome.. ele é null..
logo o teste deveria ser verdadeiro...

um outro problema... ainda com o request.getParameter() foi quando resolvi fazer uma calculadora...

nos testes condiçoes tem....
if (op == "+"){
...
}

.. a questão é que, sobre circunstância alguma ele executa isso...
que tipo de erro é esse?
será que é questão de tipo de dados?
será que tem algum problema comparar strings?

6 Respostas

leonardom

“null” (String) é diferente de null (palavra reservada)

Portanto:

&lt;%
 String nome = (String) request.getParameter("tNome");
 
 if (nome == null ){
    throw new exception .....
    }
 %&gt;

Strings devem ser testados com o método equals();

if (op.equals("+")){
 ...
 }
luiz_ross
proteus_adi:
seguinte... eu tenho o código[estou na escola agora]:
&lt;%
String nome = (String) request.getParameter("tNome");
String nulo = "null";

if (nome == nulo ){
   throw new exception .....
   }
%&gt;
[color=red] a questão é, por default , se não tem o parametro tNome.. ele é null.. logo o teste deveria ser verdadeiro... [/color]

um outro problema... ainda com o request.getParameter() foi quando resolvi fazer uma calculadora...

nos testes condiçoes tem....
if (op == "+"){
...
}

.. a questão é que, sobre circunstância alguma ele executa isso...
que tipo de erro é esse?
será que é questão de tipo de dados?
será que tem algum problema comparar strings?

Errado. Vc esta tentando comparar uma String com uma outra string em que o conteúdo é o valor "null", o que é bem diferente de comparar com uma referência nula.

Onde se vc fizer

&lt;%
String nome = (String) request.getParameter("tNome");

if (nome == null ){
   throw new exception .....
   }
%&gt;

ai sim dará certo

proteus_adi

oh!!

valeuz…

mas…
ainda sobre a questão do “+”…
esta é a unica maneira correta?
onde eu acho os methodos do String ?

danieldestro

Java DOC da classe String: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
(Leia sempre os Javadocs)

E para comprar String, use sempre o método equals(). Ex:

String s = "Daniel"; String t = "Destro"; if( s.equals( t ) ) { //igual }

Rafael_Steil

Complementando a resposta do daniel, use equals() para comparar Strings SE o seu objeto nao for nulo. Ou seja, se voce nao tiver uma instancia criada, a expressao ira resultaar em uma quebra do programa:

String s = null;

/// Esse codigo vai dar quebrar o programa na hora de 
// rodar, pois "s" eh null. 
if (s.equals("abc")) { ... }

// Esse codigo certifica-se primeiro que a variavel 
// nao eh null antes de charmar o equals()
if (s != null && s.equals("abc")) { ... }

// Se voce quer comparar diretamente com algum valor
// especifico, coloque a comparacao em primeiro lugar. 
// Dessa forma, voce nao precisa da comparacao com null
if ("abc".equals(s)) { ... }

Rafael

kuchma

StringUtils do Commons-Lang eh bom pra isso. :smiley:

if (StringUtils.equals(bla, "bla")) ...

Marcio Kuchma

Criado 6 de abril de 2005
Ultima resposta 6 de abr. de 2005
Respostas 6
Participantes 6