如何不借助额外库拆分候选人ID与姓名至两个数组?
拆分候选人信息为ID数组与姓名数组(Java实现)
需求说明
输入的候选人信息格式为 {id_1},{name_1};{id_2},{name_2};……,每段候选人信息以分号分隔,ID与姓名以逗号分隔。需将这些数据拆分为独立的ID数组和姓名数组,且不使用任何第三方库。
完整实现代码
import java.util.Scanner; public class A3_Q2 { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); // 显示欢迎信息 System.out.println("欢迎使用简易电子投票系统(SEVS):"); System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++"); // 提示用户输入候选人信息 System.out.println("请输入候选人信息集合(格式:ID1,姓名1;ID2,姓名2;……):"); String candi = keyboard.nextLine(); String[] cand = candi.split(";"); // 初始化ID数组和姓名数组,长度与候选人数量一致 String[] ids = new String[cand.length]; String[] names = new String[cand.length]; // 遍历拆分每个候选人的ID和姓名 for (int i = 0; i < cand.length; i++) { // 按逗号拆分单个候选人信息,处理可能的格式异常 String[] info = cand[i].split(","); if (info.length == 2) { ids[i] = info[0].trim(); // 去除首尾空白符 names[i] = info[1].trim(); } else { // 格式错误时标记无效数据 ids[i] = "无效ID"; names[i] = "无效姓名"; } } // 显示功能选项及对应编码 System.out.println("********************************"); System.out.println("| 编码 >> 功能描述 |"); System.out.println("********************************"); System.out.println("| 1 >> 显示候选人列表 |"); System.out.println("| 2 >> 为候选人投票 |"); System.out.println("| 3 >> 添加新候选人 |"); System.out.println("| 4 >> 显示投票结果 |"); System.out.println("| 0 >> 退出简易电子投票系统 |"); System.out.println("********************************"); // 示例:打印拆分后的ID数组和姓名数组 System.out.println("\n拆分后的ID数组:"); for (String id : ids) { System.out.print(id + " "); } System.out.println("\n拆分后的姓名数组:"); for (String name : names) { System.out.print(name + " "); } keyboard.close(); } }
关键实现逻辑
- 先用
split(";")将输入字符串分割为单个候选人的信息字符串数组 - 初始化长度匹配的ID数组和姓名数组,遍历每个候选人信息,用
split(",")拆分出ID与姓名 - 增加格式校验,若单个候选人信息无法拆分为两部分,标记为无效数据,避免数组越界异常
- 调用
trim()去除ID和姓名首尾空白字符,提升数据准确性
内容的提问来源于stack exchange,提问作者SkySystem
相关产品推荐
相关产品推荐

