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

Java循环中变量m更新后字符串sample未同步更新的问题

问题分析与解决:字符串未随变量更新同步变化

问题原因

你代码中的sample字符串是在循环外部初始化的,初始化时它的值就固定为"Checking if this works 1"了。Java的字符串属于不可变类型,一旦创建完成,就不会自动跟随依赖的变量(比如m)变化而更新。后续循环里修改m的值,对已经生成的sample字符串没有任何影响。

修正方案

方案1:将字符串拼接逻辑移入循环内部

每次循环都重新生成包含当前m对应数组元素的字符串:

class test {
    public static void main(String[] args) {
        int num = 5;
        int m = 0;
        String[] m_id = {"1","2","3","4","5"};
        
        for (int i = 0; i < num; i++) {
            m = m + 1;
            // 注意m从1开始,数组索引从0,所以用m-1对应正确元素
            String sample = "Checking if this works" + " " + m_id[m - 1];
            System.out.println(sample);
        }
    }
}

方案2:直接使用循环变量索引数组(更简洁)

去掉多余的m变量,用循环变量i直接访问数组元素,逻辑更清晰:

class test {
    public static void main(String[] args) {
        int num = 5;
        String[] m_id = {"1","2","3","4","5"};
        
        for (int i = 0; i < num; i++) {
            String sample = "Checking if this works" + " " + m_id[i];
            System.out.println(sample);
        }
    }
}

效果说明

两种方案都会在每次循环中重新拼接字符串,使用当前循环对应的数组元素值,最终输出符合你的预期:

Checking if this works 1
Checking if this works 2
Checking if this works 3
Checking if this works 4
Checking if this works 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:47:13