You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArrayList size达标时递增变量的for循环初始化、条件与逻辑咨询

解决方案

首先修正你代码里的语法错误:按钮点击事件的Lambda表达式缺少闭合的}),先补上。

方式一:直接数学计算(推荐,无需循环)

你的需求本质是:a的值等于arrayLog.size()除以59的整数商(当size是59的倍数时,刚好匹配目标值)。每次添加元素后直接计算当前应有的a值即可:

int a = 0;
ArrayList<String> arrayLog = new ArrayList<>();

androidx.appcompat.widget.AppCompatButton log = findViewById(R.id.log);
log.setOnClickListener(view -> {
    arrayLog.add("Clicked");
    // 添加元素后获取当前集合大小
    int currentSize = arrayLog.size();
    // 计算当前a的目标值:size除以59取整
    int currentA = currentSize / 59;
    // 仅当达到新阈值时更新a
    if (currentA > a) {
        a = currentA;
        // 这里可添加a更新后的业务逻辑,比如打印日志
        // Log.d("TAG", "a已更新为:" + a);
    }
});

这种方式简单高效,完全满足需求:size=59时currentA=1,size=118时currentA=2,以此类推,且只有达到阈值时a才会变化。

方式二:使用循环(按需选择)

如果一定要用循环实现,可以从当前a的下一个阈值开始检查:

int a = 0;
ArrayList<String> arrayLog = new ArrayList<>();

androidx.appcompat.widget.AppCompatButton log = findViewById(R.id.log);
log.setOnClickListener(view -> {
    arrayLog.add("Clicked");
    int currentSize = arrayLog.size();
    // 从a+1对应的阈值开始检查
    for (int i = a + 1; ; i++) {
        int threshold = 59 * i;
        if (currentSize == threshold) {
            a = i;
            // 这里可添加a更新后的业务逻辑
            break;
        } else if (currentSize < threshold) {
            // 未达到下一个阈值,退出循环
            break;
        }
        // 若size跳过了当前阈值(比如批量添加元素),继续检查下一个
    }
});

注意:原代码里的int n = arrayLog.size();只会在初始化时执行一次,无法响应按钮点击后的size变化,必须把size的检查逻辑放在按钮点击事件内部。

内容的提问来源于stack exchange,提问作者Abisay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:52:49