folder Tahribat.com Forumları
linefolder Android - IOS Programlama
linefolder Enteresan Bir Kod Olayı (YAZILIM)



Enteresan Bir Kod Olayı (YAZILIM)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    if fonksiyonu mu yanlış çalışıyor mantığı mı farklı benim yazdığım kod mu yanlış ? 


    for(int Friends=0;Friends<FriendsIdsArray.size();Friends++)
    {
    for(int Followers=0;Followers<FollowerIdsArray.size();Followers++)
    {

    if (FriendsIdsArray.get(Friends) == FollowerIdsArray.get(Followers))
    {

    Log.e("Unfollow Yemeyenler ",FriendsIdsArray.get(Friends)+ " - " +FollowerIdsArray.get(Followers));
    }
    else
    {
    Log.e("Unfollow Yiyenler ",FriendsIdsArray.get(Friends)+ " - " +FollowerIdsArray.get(Followers));
    }

    }

    }



    Log Çıktısı ( Ekran çıktısı ) ----





    Bu Olay çok saçma değil midir ?
    Array'ler Long tipinde ve eşit olmasına rağmen attığı loga bakın ? sayılar da eşit 1453 defa kontrol ettim anneme babama sordum sayılar aynı mı diye aynı
    diyorlar ? Benim mi hatam var kodda anlamadım Object.equals(ArrayList.get(...)) şeklinde yapmama rağmen olmadı
    2 ArrayList değerini String'e çevirip karşılaştırdım gene olmadı :D If else yapısı mı değişti ?

    Bu Çok tuhaf değil mi gerçekten makinalar aptalmış :D



    Dipnot: Genel bir konu olduğu için genel olarak açtım her dilde aynı .. eğer gene yanlış ise lütfen uygun konuya taşır mısınız..

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek
    FriendsIdsArray.get(Friends) ne döndürüyor normalde hocam?

    toString metodu ile equals metodu farklı kodlanmış olabilir.

    Ayrıca == operatörü primitive tipler dışında direkt karşılaştırma yapmıyor diye biliyorum.

    There are 10 types of people in the world. Those who knows binary and those who dont...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    NmC bunu yazdı
    FriendsIdsArray.get(Friends) ne döndürüyor normalde hocam?

    toString metodu ile equals metodu farklı kodlanmış olabilir.

    Ayrıca == operatörü primitive tipler dışında direkt karşılaştırma yapmıyor diye biliyorum.

    FriendsIdsArray = new ArrayList<Long>();

    ikisi de aynı şekilde Long tipinde  


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    bunların long olduğuna eminsen o zaman farkını neden kontrol etmiyorsun?

    FriendsIdsArray.get(Friends) - FollowerIdsArray.get(Followers)) == 0 

    gibi..

    ama bu farkı ekrana yazdır bakalım ne çıkıyor.. 

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    unbalanced bunu yazdı

    bunların long olduğuna eminsen o zaman farkını neden kontrol etmiyorsun?

    FriendsIdsArray.get(Friends) - FollowerIdsArray.get(Followers)) == 0 

    gibi..

    ama bu farkı ekrana yazdır bakalım ne çıkıyor.. 

     

    Hocam hiç aklıma gelmemişti bu nasıl bi mantıktır vallaha helal olsun :D Çok uğraşınca sinir mantığın önüne geçiyor bunu bi deneyeyim

    EDİT : Çalıştı ama anlamadığım konu şuan if içerisinde String ve Long tipini eşit almıyor eşit olmasına rağmen ... Sebebi nedir ? Bilmediğim birşey olmalı Yazılımcının hayatı if-else den ibarettir o yüzden çok merak ettim bu konuyu

    MhmdAlmz tarafından 03/Şub/16 01:38 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam olayın if ile ilgisi yok.. 

    senin karşılaştırma için kullandığın değerlerle ilgili sorun vardır..daha önce bi konuda yazdım geçenlerde, == ile Equals(..) metodu bazı durumlarda farklı cevaplar dönderir aynı görülse de.. Bu yüzden karşılaştıracağın değişkenlerin tiplerine, karşılaştırma için kullandığın metoduna dikkat etmelisin. 

    bahsettiğim örnek burada http://www.tahribat.com/forum/entity-sorgusu-yardim-215542#msg2680261

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Theholiqan
    Theholiqan's avatar
    Kayıt Tarihi: 28/Temmuz/2012
    Erkek

    Hocam java gibi dillerde özellikle javada == operatörü class karşılaştırmalarında problemlidir. Bu yüzden .equals kullanılır ve sanırım sorununuzun kaynağı bu olabilir 


    Bize çağ dışı diyorlar Doğrudur; Çağlar açtık, çağlar kapattık Çağlar bizden geri!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    Theholiqan bunu yazdı

    Hocam java gibi dillerde özellikle javada == operatörü class karşılaştırmalarında problemlidir. Bu yüzden .equals kullanılır ve sanırım sorununuzun kaynağı bu olabilir 

    yok hocam equals yaptım olmadı Unbalancedin dediği şey oldu ikisini çıkardım fakat farklı bi problem olduğunda sıkıntım olacak tekrardan yani 2 string karşılaştırmasında gene böyle bir sorun ile karşılaşırsam sıkıntı olacak


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    MhmdAlmz bunu yazdı
    Theholiqan bunu yazdı

    Hocam java gibi dillerde özellikle javada == operatörü class karşılaştırmalarında problemlidir. Bu yüzden .equals kullanılır ve sanırım sorununuzun kaynağı bu olabilir 

    yok hocam equals yaptım olmadı Unbalancedin dediği şey oldu ikisini çıkardım fakat farklı bi problem olduğunda sıkıntım olacak tekrardan yani 2 string karşılaştırmasında gene böyle bir sorun ile karşılaşırsam sıkıntı olacak

    Unbalanced bu konularin uzmanidir. bu hatanin da nedeni genelde 1.00 ile 1 bir birine esit degildir ama ikiside long olabilir. int64'e convert edip de bir denersen == kontrolu de yemesi lazim.  

    dipce; Unbalanced'in onerdigi yontem daha performansli calisacaktir cevrim yapmadan esitligin kontrolu

     


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    Almaz, ikisi ayni deger farkli objeler. Primitive type degiller, objeleri kiyaslarken equals kullanilir.

    Ayrıca; @unbalanced ve @theholiqan' ın dediği gibi bazen karşılaştırır bazen karşılaştırmaz diye bir olay yok. 

    Burdan da cevabını bulabilirsin;

    http://stackoverflow.com/questions/7520432/java-vs-equals-confusion

     

     

    ozgunlu tarafından 03/Şub/16 09:22 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    abi eğer Long class ını kullandıysan normal böyle olması.

    Long ve long farklı şeyler aslında.  Sen Long tipindeki bir değişkeni == ile karşılaştırırsan o gidip jwm üzerindeki bellek adreslerini karşılaştırır.  Bunun yerine compare metodunu kullanman daha mantıklı olacaktır.

     


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
Toplam Hit: 3296 Toplam Mesaj: 23
yazılım if-else if else