Kullanıcı Adı:
Şifre:
Bu konudaki kullanıcılar:
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
2 hafta (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.
2 hafta (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.




K
Kemâncı
2 hafta (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.




Bu mesajda bahsedilenler: @Pikod

P
Pikod
2 hafta (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
2 hafta (4802 mesaj)
JSON gonder, al. Kasma kendi protokolunu yaratmakla.





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