Если условие дает неверный вывод

#java #android

#java #Android

Вопрос:

При запуске этого кода он всегда проходит через if блок. Не имеет значения, count есть 0 это или нет, он всегда выполняет этот блок.

 if (!count.equals("0")) {
    Toast.makeText(getActivity(),"No data in there.Count = " count, Toast.LENGTH_LONG).show();
    return;
}else{
    Toast.makeText(getActivity(),"Count = " count, Toast.LENGTH_LONG).show();
    Fragment fragment = new PGSubCatFragment();
    Bundle bCatID = new Bundle();
    bCatID.putString("catid", cID);
    fragment.setArguments(bCatID);

    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction().replace(R.id.frame, fragment).commit();
}
 

Не могли бы вы объяснить, что не так?

Вот консольный вывод моего приложения:

 D/PGCatFragment: Count = 0 gallery
I/gralloc.sc8830: gralloc_register_buffer, handle:0x579da7c0, size:0x40200, fd:64
I/gralloc.sc8830: gralloc_register_buffer, handle:0x574508c0, size:0xcc30, fd:69
I/gralloc.sc8830: gralloc_register_buffer, handle:0x549341d8, size:0x40200, fd:67
I/gralloc.sc8830: gralloc_register_buffer, handle:0x579dc708, size:0x40200, fd:80
I/gralloc.sc8830: gralloc_register_buffer, handle:0x579ea370, size:0x40200, fd:82
D/PGSubCatFragment: {"message":"No gallery found","success":0}
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x579da7c0, size:0x40200, fd:64
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x549341d8, size:0x40200, fd:67
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x579dc708, size:0x40200, fd:80
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x579ea370, size:0x40200, fd:82
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x574508c0, size:0xcc30, fd:69
I/gralloc.sc8830: gralloc_register_buffer, handle:0x579ffea0, size:0x40200, fd:62
I/gralloc.sc8830: gralloc_register_buffer, handle:0x57a002d8, size:0x40200, fd:73
I/gralloc.sc8830: gralloc_register_buffer, handle:0x5225ce28, size:0x40200, fd:70
I/gralloc.sc8830: gralloc_register_buffer, handle:0x57a00a60, size:0x40200, fd:72
D/PGCatFragment: {"success":1,"imgCat":[{"catimg":"http://live.jmpcbuiltline.com/admin/upload/gallery/430912.JPG","catid":"1","subcatcount":"5","catname":"Event"},{"catimg":"","catid":"2","subcatcount":"0","catname":"Media"}]}
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x579ffea0, size:0x40200, fd:62
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x57a002d8, size:0x40200, fd:73
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x5225ce28, size:0x40200, fd:70
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x57a00a60, size:0x40200, fd:72
D/PGCatFragment: Count = 5 gallery
I/gralloc.sc8830: gralloc_register_buffer, handle:0x579f5710, size:0x40200, fd:64
I/gralloc.sc8830: gralloc_register_buffer, handle:0x57b4dc88, size:0xcc30, fd:68
I/gralloc.sc8830: gralloc_register_buffer, handle:0x50685a30, size:0x40200, fd:73
I/gralloc.sc8830: gralloc_register_buffer, handle:0x54f8bee8, size:0x40200, fd:80
I/gralloc.sc8830: gralloc_register_buffer, handle:0x579f55f8, size:0x40200, fd:82
D/PGSubCatFragment: {"success":1,"imgSubCat":[{"gname":"1st Event","gid":"1","catimgcount":"11","subcatimg":"http://live.jmpcbuiltline.com/admin/upload/gallery/237156.png"},{"gname":"2nd Event","gid":"2","catimgcount":"14","subcatimg":"http://live.jmpcbuiltline.com/admin/upload/gallery/4425910.JPG"},{"gname":"3rd Event","gid":"3","catimgcount":"11","subcatimg":"http://live.jmpcbuiltline.com/admin/upload/gallery/731556.JPG"},{"gname":"4th Event","gid":"4","catimgcount":"13","subcatimg":"http://live.jmpcbuiltline.com/admin/upload/gallery/967434.JPG"},{"gname":"Organise by JMPC","gid":"5","catimgcount":"15","subcatimg":"http://live.jmpcbuiltline.com/admin/upload/gallery/5253910.JPG"}]}
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x579f5710, size:0x40200, fd:64
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x50685a30, size:0x40200, fd:73
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x54f8bee8, size:0x40200, fd:80
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x579f55f8, size:0x40200, fd:82
D/dalvikvm: GC_FOR_ALLOC freed 6613K, 24% free 22864K/29756K, paused 51ms, total 51ms
I/gralloc.sc8830: gralloc_unregister_buffer, handle:0x57b4dc88, size:0xcc30, fd:68
 

Комментарии:

1. Что такое count? целое число?

2. » Есть одна переменная, которая не имеет ожидаемого значения, но я не собираюсь показывать вам, откуда взялась эта переменная » Как именно мы должны это отлаживать?

3. count — это строка, и она тоже дает значение, но всегда будет, если условие четного блока равно true или false, я проверил их, поджарив себя

4. Count = 0 gallery , Count = 5 gallery . Ваша count переменная не "0" является, это "0 gallery"

5. @jhamon, пожалуйста, добавьте свой ответ, это слишком очевидно 😉

Ответ №1:

Судя по вашим журналам:

 Count = 0 gallery
Count = 5 gallery 
 

count не является "0" , но является "0 gallery

Решения могут быть либо:

  • получите значение перед добавлением " gallery" части
  • используйте if(!count.startWith("0 ")){ , не пропуская пробел после 0, в случае, если есть цифры, подобные 05, 06. Но это не будет работать с несколькими 0s.
  • используйте регулярное if(!count.matches("0 gallery")){ выражение . Означает 1 или более 0 с
  • разделите count символ пробела и сравните первую возвращенную строку (немного похоже на первый вариант)

Ответ №2:

If count — строка

затем используйте это if(!count.equalsIgnoreCase("0")) вместо if(!count.equals("0"))

If count — это int

затем используйте это if(count != 0)) вместо if(!count.equals("0"))

Комментарии:

1. Если count бы это был примитив int, то вы не могли бы использовать equals