Şifremi/Kullanıcı Adımı Unuttum
Bağlan Google+ ile Bağlan Facebook ile Bağlan
Şimdi Ara

Java Stringler aynı fakat if döngüsünde true dönmüyor [Çözüm]

4
Cevap
0
Favori
79
Tıklama
Cevapla
Tüm Forumlar >> Web Tasarım - Programlama >> Yazılım Geliştirme >> Java >> Java Stringler aynı fakat if döngüsünde true dönmüyor [Çözüm]
Sayfaya Git:
Sayfa:
1
Giriş
Mesaj
  • Onbaşı
    16 Mesaj
    Arkadaşlar ben yaşayan olursa diye az önce aldığım saçma sapan hatanın çözümünü nasıl bulduğumu anlatacağım.

    Ilk olarak bu uygulama bir SERVER/CLIENT uygulamasında. Hata server'de
    Client ten gelen string "message kullanıcının mesajı" tarzında oluyor.
    Split ile 0. indexteki kelimeyi aldım (message). Sonrada if döngüsü ile eğer message ise diye kontrol ettim.
    Saçma bir nedenle ne denediysemde true dönmedi.

    Çözüm:
    String gelenMesaj = msg;
    String msgcmd = "message";

    if(msgcmd.hashCode() == gelenMesaj.hashCode()){

    }

    Arkadaşlar sonuç olarak olay hashCode fonksiyonu ile çözüme ulaştı.

    Bu hatayı neden aldığımı bilen varsa banada anlatabilir mi :D



    |
    |
    _____________________________
  • Teğmen
    246 Mesaj
    Stringler primitive typler değil birer objeler yani == ile kontrol edemezsin. Karşılaştırmak için string1.equal(string2) ile kontrol etmen gerekiyor. == sadece bu stringlerin referanslarını check eder ve referansları aynı ise true döner. Bu sebeple javada objeleri karşılaştırmak için equals kullanmak gerekir. hatta kendi objelerinin equals metodlarını override ederekte kullanabilirsin.
    |
    |
    _____________________________
  • Yarbay
    2269 Mesaj

    Merhaba,

    Öncelikle client/server arasında bir iletişim kurmak istiyorsan bunu String veri tipi üzerinde değil de integer üzerinden yapman daha uygun olur.

    Örneğin,

     

    int MSG_CONNECTED = 1;
    int MSG_USER_JOINED = 2;
    int MSG_USER_LEAVING = 3;

    //while...

    if(intMsg == MSG_CONNECTED){
    ...
    }




    Eğer ki mesajlar böyle bir iletişim için değil de String üzerinden kullanılacaksa,

     

    if(strMsg.equals("merhaba"))
    //ya da
    if(strMsg.contains("hey"))



    şeklinde kullanılabilir.
    |
    |
    Bahsedilenler: Pikod
    _____________________________
  • Onbaşı
    16 Mesaj
    Arkadaşlar hepinize çok teşşkür ediyorum equals baya işime yaradı.
    Ayrıca socket'de integer kullanmakta baya mantıklı ama kendime buffer system yaptım.
    channel <0,1,2,3,4> şeklinde bir aktarım gerçekleşiyor.
    yazdığım read fonksiyonları 0,1,2,3,4 ü char dan normale çevirip channel ile birlikte şöyle geri döndrüyor
    String[] ret = {"message", "channel"};
    böylece username ve chat gibi olayları gönderip alabiliyorum
    |
    |
    _____________________________
  • Yarbay
    4802 Mesaj
    JSON gonder, al. Kasma kendi protokolunu yaratmakla.



    < Bu ileti mobil sürüm kullanılarak atıldı >
    |
    |
    _____________________________
HızlıCevap
Sayfaya Git:
Sayfa:
1
Reklamlar
Masal
Mobilya Takımları
haberler
instagram takipçi
Bey Azura
Bu sayfanın
Mobil sürümü
Mini Sürümü

DHSQLZ
0,125
1.2.165

Reklamlar
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.