繁体   English   中英

奇怪的循环行为

[英]Strange For-loop behavior

我在包含if-else if-else块的for循环中看到奇怪的行为。

如果我执行以下操作,则可以正常工作,但列表中不存在的名称除外:

Resources res = context.getResources();
        String[] debtnameslist = res.getStringArray(R.array.debtnames);

        for(int i=1; i < debtnameslist.length; i++){
               if (debtname.toLowerCase().contains(debtnameslist[i]))
                   {
                   int resID = context.getResources().getIdentifier("ic_dialog_"+debtnameslist[i], "drawable", "com.freshsoft.android.debtdestroyer");
                   icon.setImageResource(resID);
                   }
               else if ((debtname.toLowerCase().contains("best") && (debtname.toLowerCase().contains("buy"))))
               {
                   icon.setImageResource(R.drawable.ic_dialog_bestbuy);
                }
//                 else {
//                     icon.setImageResource(R.drawable.ic_dialog_dollar);
//                 }
          }

给我这个: http : //i54.tinypic.com/rsr33q.png

它可以工作,除了“测试”应显示通用符号。 如果取消注释// else部分,则会得到以下信息:

http://i54.tinypic.com/25kj6z6.png

我的xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="debtnames">
    <item >chase</item>
    <item >discover</item>
    <item >citibank</item>
    <item >amazon</item>
    <item >american express</item>
    <item >diners</item>
    <item >mastercard</item>
    <item >visa</item>
    <item >paypal</item>
    <item >macys</item>
    <item >bmw</item>
    <item >target</item>
</string-array>
</resources>

问题是-如果debtnameslist[i]名称debtnameslist[i]不包含debtnames名称中的任何名称或“最佳购买”,它将放置美元图标-因为第一个if为false,第二个if也为false。

您不能在其中放置非条件的else子句,因为它将覆盖下一个循环中的图标!

正如您所看到的,在这种情况下唯一可以使用的1是“目标”-因为它是最后一个,所以没有下一个循环可以覆盖其图标。

将其拧紧一会儿后,便将其弄清楚。 诀窍是如果找到匹配项则打破循环:

for (String name : debtnameslist) {
            boolean matches = debtname.toLowerCase().contains(name);
            if (matches)
            {
                int resID = context.getResources().getIdentifier("ic_dialog_"+name, "drawable", "com.freshsoft.android.debtdestroyer");
                   icon.setImageResource(resID);
                  break;
            } else {
                icon.setImageResource(R.drawable.ic_dialog_dollar);
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM