2016-04-07 10 views
-7

これは問題ではないはずですから、ファイルからクラスのリストにデータをロードしてから、ユーザー入力から文字列をチェックします。比較するときに文字列が等しい場合、ファイルから抽出されたいくつかの変数を出力する必要があります。Javaが正しく2つの同等の文字列を比較しない

public static Double[] buscarLocacion(String estado,String municipio){ 

    Double[] coord = { 0.0, 0.0 };  
    for(Ubicacion i: ubicacion) { 

     System.out.println("check: "+estado +" getEstado:"+ i.getEstado() + " ==: " +i.getEstado().equals(estado)); 

     if(i.getEstado().equals(estado)) { 
      if(i.getMunicipio().equals(municipio)) { 

       coord[0] = i.getLat(); 
       coord[1] = i.getLon(); 
       return coord 

     //etc.. 

メイン関数で別のクラスを作成しました。私は別のものにこのクラスをインポートするときの比較を行うとき

found: hidalgo - tula de allende lat:20.0535516 lon: -99.3395636 

しかし、私は常にnullを取得:これは予想通り、文字列が等しいこのプログラムのプリントが動作します。私が比較しているものを印刷してプログラムを設立した場合の比較では、このような真か偽:

System.out.println("check: "+estado +" getEstado:"+ i.getEstado() + " equals?=: " +i.getEstado().equals(estado)); 

と、このコードを印刷この:

check: yucatan file:veracruz de ignacio de la llave ==: false 
check: yucatan file:yucatan ==: false //<<<- how is this possible?? 
check: yucatan file:oaxaca ==: false 

に任意のアイデアをなぜこれが起こっていますか?私は問題を見つけることができません。私はここで間違って何をしていますか?

+2

出力は、投稿したコードのものではありません。出力などに "check:"はありません。 –

+3

これはそのコードの出力ではありません。実際のコードと実際の出力を表示してください。 – Biffen

+0

とUbicacionも掲載しています。 getEstado() –

答えて

1

あなたの入力には空白が含まれる場合があります。たとえば、" yucatan"となります。

+0

これは問題ありがとうございました! –

0

おそらく問題は「i」か、見出しまたは後ろの空白である可能性があります。次のことを試してみてください。

public static Double[] buscarLocacion(String estado,String municipio){ 

    Double[] coord = { 0.0, 0.0 }; 

    for(Ubicacion i: ubicación){ 
     String iEstado = i.getEstado().trim(); 
     estado = estado.trim(); 

     System.out.println("check: "+estado +" getEstado:"+ iEstado + " ==: " +iEstado.equals(estado)); 


      if(iEstado.equals(estado)){ 
       String iMunicipio = i.getMunicipio().trim(); 
       municipio = municipio.trim(); 

       if(iMunicipio.equals(municipio)){ 

       coord[0] = i.getLat(); 
       coord[1] = i.getLon(); 
       return coord 

//etc.. 

私は前に、エラーのこの種を持っていた、これはなぜ起こるか私はわからないが、これはあなたのコードを修正する必要があります。 (追加の変数を作成する必要がない)

estado.equals(i.getEstado()); 

、この方法は、それが動作するかどうか確認してください。それがない場合は、比較の順序を変更しようとすることができます。

関連する問題