繁体   English   中英

如何在Android上的特定条件下停止循环并将数据插入数组

[英]How to stop looping and insert data to array in certain conditon on Android

我想让循环处于停止状态时停止运行以下代码:

for (i = 0; i < 8 ; i++) {
    Cursor r = db.rawQuery("SELECT _id, key_foodstuff, key_calorie, key_carbohydrate, key_fat, key_protein FROM (food INNER JOIN categories ON food.key_nocategory = categories.nocategories) WHERE key_type!='secondary' AND _id!=164 ORDER BY RANDOM() LIMIT 1", null);       

    if(r.moveToFirst())
    {
            morning_food[i] = r.getString(0);
            Log.v("_id : ", morning_food[i]);
            morning_food[c] = r.getString(2);
            Log.v("Kalori : ", morning_food[c]);
            sumOfCalorie = sumOfCalorie + Double.parseDouble(morning_food [c]);
            Log.v("Sum : ", "" + sumOfCalorie);

            if (sumOfCalorie == morning_cal || sumOfCalorie >= morning_cal-(morning_cal*0.1) && sumOfCalorie <= morning_cal+(morning_cal*0.1))
            {
                break;
            }


    }

有什么解决办法吗? 这是行不通的... Thx。

if(r.moveToFirst())..您正在看第一行8次却从未移至下一行?

尝试这个

outerloop:
for (i = 0; i < 8 ; i++) {
    Cursor r = db.rawQuery("SELECT _id, key_foodstuff, key_calorie, key_carbohydrate, key_fat, key_protein FROM (food INNER JOIN categories ON food.key_nocategory = categories.nocategories) WHERE key_type!='secondary' AND _id!=164 ORDER BY RANDOM() LIMIT 1", null);       

    if(r.moveToFirst())
    {
            morning_food[i] = r.getString(0);
            Log.v("_id : ", morning_food[i]);
            morning_food[c] = r.getString(2);
            Log.v("Kalori : ", morning_food[c]);
            sumOfCalorie = sumOfCalorie + Double.parseDouble(morning_food [c]);
            Log.v("Sum : ", "" + sumOfCalorie);

            if (sumOfCalorie == morning_cal || sumOfCalorie >= morning_cal-(morning_cal*0.1) && sumOfCalorie <= morning_cal+(morning_cal*0.1))
            {
                break outerloop;
            }


    }

您可以将此代码放在类似以下的函数中吗:

            private void doYourCode() {
            for (i = 0; i < 8 ; i++) {
                Cursor r = db.rawQuery("SELECT _id, key_foodstuff, key_calorie, key_carbohydrate, key_fat, key_protein FROM (food INNER JOIN categories ON food.key_nocategory = categories.nocategories) WHERE key_type!='secondary' AND _id!=164 ORDER BY RANDOM() LIMIT 1", null);       

                if(r.moveToFirst())
                {
                        morning_food[i] = r.getString(0);
                        Log.v("_id : ", morning_food[i]);
                        morning_food[c] = r.getString(2);
                        Log.v("Kalori : ", morning_food[c]);
                        sumOfCalorie = sumOfCalorie + Double.parseDouble(morning_food [c]);
                        Log.v("Sum : ", "" + sumOfCalorie);

                        if (sumOfCalorie == morning_cal || sumOfCalorie >= morning_cal-(morning_cal*0.1) && sumOfCalorie <= morning_cal+(morning_cal*0.1))
                        {
                            //break;
                            return;
                        }


                }
            }

暂无
暂无

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

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