Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
4
Cevap
0
Tıklama
0
Öne Çıkarma
Java Stringler aynı fakat if döngüsünde true dönmüyor [Çözüm]

P Pikod Konu Sahibi
geçen yıl (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




. .SoS.
geçen yıl (247 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.




K Kemâncı
geçen yıl (2312 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.




Bu mesajda bahsedilenler: @Pikod

P Pikod Konu Sahibi
geçen yıl (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




M Mephalay
geçen yıl (4832 mesaj)
JSON gonder, al. Kasma kendi protokolunu yaratmakla.





< Bu ileti mobil sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.