使用累积算法拼接用户输入字符串时的重复问题排查
解决先修课程输出仅显示最后一门的问题
嘿,我完全懂你现在的困扰——程序跑起来没报错,但输出的时候只重复显示最后一门先修课程,这确实让人摸不着头脑!你推测的循环中对象值被覆盖完全正确,这是新手写循环时很容易踩的坑。
问题根源:用单个变量存储所有输入
通常出现这种情况,是因为你用了一个单独的变量来承接每一次输入的课程名称,每次循环都会把新输入的值覆盖掉旧的,最后自然只剩最后一次输入的内容。举个常见的错误示例(以Python为例):
# 错误写法:单个变量存储,导致覆盖 prereq_course = "" num_prereqs = int(input("请输入先修课程数量:")) for _ in range(num_prereqs): prereq_course = input("请输入先修课程名称:") # 最终只会输出最后一门课程 print("先修课程列表:", prereq_course)
解决方案:用容器存储所有输入
你需要用一个**列表(或其他可变容器)**来保存每一门先修课程,每次循环把新输入的课程添加到容器里,而不是覆盖原有内容。修改后的代码示例:
# 正确写法:用列表存储所有课程 prereq_list = [] num_prereqs = int(input("请输入先修课程数量:")) for _ in range(num_prereqs): course_name = input("请输入先修课程名称:") prereq_list.append(course_name) # 将列表转为单行字符串输出,用逗号分隔 print("先修课程列表:", ", ".join(prereq_list))
其他语言的思路参考
如果是Java、C#这类语言,逻辑是一样的:
- Java:使用
ArrayList<String>代替单个String变量,每次调用add()方法添加课程 - C#:使用
List<string>,通过Add()方法存入每门课程
最后再通过字符串拼接的方式把列表内容转为单行输出。
这样修改后,程序就能正确输出所有先修课程的单行列表啦!
内容的提问来源于stack exchange,提问作者Rash8151
相关产品推荐
相关产品推荐

