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

Java中如何将for循环内的字符串数据存入循环外的数组?

解决Java循环内字符串存入循环外数组的问题

你当前的核心问题是:miss是单个字符串变量,每次循环都会被新生成的值覆盖,最终只能保留最后一次循环的结果。要把所有循环生成的miss值存入数组,我们可以通过两种方式实现:

方法一:提前创建对应长度的数组

因为你已经知道JSONArray的元素数量,所以可以直接创建相同长度的字符串数组,在循环中将每个生成的miss存入数组对应索引位置:

Customer dtls = new Customer(); 
String missing = dtls.getList(stingName, intAge, intMob, stingDOB); 
JSONArray mJsonArray_miss_dtls = new JSONArray(missing); 
// 提前创建与JSONArray长度一致的数组
String[] missArray = new String[mJsonArray_miss_dtls.length()];
int cnt = 0; // 记得初始化计数变量
for (int k = 0; k < mJsonArray_miss_dtls.length(); k++) { 
    JSONObject missingObject = mJsonArray_miss_dtls.getJSONObject(k); 
    String s1 = missingObject.getString("DOB"); 
    String[] b = s1.split("T"); 
    String[] b1 = b[0].split("-"); 
    String miss = b1[0] + "/" + b1[1]; 
    // 将当前循环生成的miss存入数组
    missArray[k] = miss;
    cnt++; 
}
// 此时missArray中已保存所有循环生成的miss值

方法二:用List存储(更灵活)

如果后续可能遇到元素数量不确定的场景,或者想更灵活地添加元素,可以先用ArrayList临时存储,最后再按需转成数组:

Customer dtls = new Customer(); 
String missing = dtls.getList(stingName, intAge, intMob, stingDOB); 
JSONArray mJsonArray_miss_dtls = new JSONArray(missing); 
List<String> missList = new ArrayList<>();
int cnt = 0;
for (int k = 0; k < mJsonArray_miss_dtls.length(); k++) { 
    JSONObject missingObject = mJsonArray_miss_dtls.getJSONObject(k); 
    String s1 = missingObject.getString("DOB"); 
    String[] b = s1.split("T"); 
    String[] b1 = b[0].split("-"); 
    String miss = b1[0] + "/" + b1[1]; 
    // 将当前miss添加到List集合中
    missList.add(miss);
    cnt++; 
}
// 按需转成数组(参数可指定数组长度,传0会自动匹配List长度)
String[] missArray = missList.toArray(new String[0]);

关键说明

  • 原代码中单个miss变量无法存储多个值,必须用数组或集合这类容器来保存循环中生成的所有结果。
  • 方法一适合已知元素数量的场景,直接分配固定长度数组,性能更优;方法二更灵活,适配元素数量不确定的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:13:20