Java中如何按索引将数组元素分别赋值给对应字符串变量
报错核心原因
你这段代码运行时抛出的基本是ArrayIndexOutOfBoundsException数组索引越界异常,根源是s.split(",")返回的options数组实际长度小于4,你直接按索引取0到3位的元素时,访问到了数组不存在的位置。
常见触发场景有三类:
- 待拆分的字符串
s本身为null,调用split方法直接抛出空指针异常 - 原字符串里逗号分隔的内容段不足4段,比如字符串是
"0,1,2",拆分后数组长度只有3,访问options[3]就会触发越界 - 原字符串是空串或全空白字符,拆分后得到的数组长度不足4,访问高位索引直接报错
可直接落地的修复代码
先做空值校验、数组长度校验,再按索引赋值,缺失的位置可以按业务需求设置默认值,从根源避免越界:
// 先拦截空值场景,避免空指针 if (s == null || s.isBlank()) { // 这里可以替换成你的业务逻辑,比如给所有变量赋默认值后直接返回 throw new IllegalArgumentException("待拆分配置字符串不能为空"); } // split传入-1是为了保留相邻逗号、末尾逗号拆分出的空串,不会自动丢弃空值导致数组长度不符合预期 String[] options = s.split(",", -1); // 先给所有变量设置默认值,默认值可根据自身业务调整,比如需要空值就设为"" String visible = "0"; String sms = "0"; String contact = "0"; String calllogs = "0"; // 按数组实际存在的索引依次赋值 if (options.length > 0) visible = options[0].trim(); if (options.length > 1) sms = options[1].trim(); if (options.length > 2) contact = options[2].trim(); if (options.length > 3) calllogs = options[3].trim();
补充说明:如果你的业务场景要求拆分后必须凑齐4个字段,那在拿到options数组后可以先判断长度是否等于4,不等于就直接抛出参数错误提示,避免后续逻辑拿到错误值运行。
内容的提问来源于stack exchange,提问作者youngcoder
相关产品推荐
相关产品推荐

