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
相关产品推荐
相关产品推荐

