Java简易问卷系统用内存集合实现“问题—选项—用户回答”链路:Question存题干/题型/选项,Answer存用户ID/题目ID/回答,SurveySystem管理题库、收集答案并统计;支持单/多/简答,输入校验与索引越界防护。

用Java做一个简易问卷调查系统,核心是把“问题—选项—用户回答”这条链路跑通。不需要数据库也能起步,用内存集合(如HashMap、ArrayList)存题库和答卷,适合学习或小范围使用。
设计基础数据结构
先定义几个关键类,让逻辑清晰:
- Question:含题干(String)、题型(单选/多选/简答)、选项列表(List<String>,简答题为空)
- Answer:含用户ID(String)、题目ID(int)、回答内容(String 或 List<Integer>,对应选项索引)
- SurveySystem:主控类,管理题目列表、收集答案、统计结果
实现问卷创建与展示
在SurveySystem中用ArrayList<Question>存题库,提供addQuestion()方法添加题目。控制台演示时,遍历打印题干和选项,提示用户输入(例如“请输入选项编号,多选用空格分隔”):
例:1. 您最喜欢的编程语言是?
① Java ② Python ③ C++
请输入选择(如:1 2):
立即学习“Java免费学习笔记(深入)”;
保存与简单统计回答
用HashMap<String, List<Answer>>按用户ID分组答卷。统计时针对单选题,可遍历所有Answer,用int[]计数数组累加各选项被选次数;多选题则对每个选项单独计数;简答题直接保留原始字符串供查看。
关键点:选项索引从0开始,用户输入需校验是否越界;多选输入用split(" ")切分后转整型,过滤重复和非法值。
扩展建议(轻量级)
想稍进一步,可以:
- 把题目和答案存成JSON文件(用Gson或Jackson),重启不丢数据
- 加个简易菜单:1. 答卷 2. 查看统计 3. 退出
- 支持跳题逻辑(如第2题选“否”则跳过第3题),用Question加一个skipCondition字段即可
基本上就这些。不复杂但容易忽略输入校验和数据边界,写完跑几遍样例题就能稳住主干逻辑。










