R语言使用while循环录入5个数字并输出偶数的代码修复问题
R代码修复方案
原有代码异常原因解释
你输入5后代码执行逻辑如下:
- 赋值
item=5,判断5<=6成立进入循环 - 先打印
item的值5 - 执行
item <- item +1,此时item更新为6 - 判断
6%%2==0为真,触发break直接终止循环,程序结束
因此最终只会输出5,完全不符合你录入5个数值、筛选偶数的需求。
原有代码核心问题
- 仅执行了1次
readline()录入操作,没有循环录入5次的逻辑 - 循环条件
item <= 6、自增逻辑item <- item +1和录入多值的需求完全不匹配 - 遇到偶数就终止程序的
break逻辑完全错误,你需要的是筛选保留偶数而非停止运行
修复后可用代码
# 初始化空向量存储录入的数值 num_vec <- c() # 循环5次完成数值录入 for (i in 1:5) { input_num <- as.integer(readline(prompt = paste0("请输入第", i, "个数值:"))) num_vec <- c(num_vec, input_num) } # 筛选所有偶数并输出 even_num <- num_vec[num_vec %% 2 == 0] print("录入数值中的所有偶数如下:") print(even_num)
代码逻辑说明
- 先创建空向量
num_vec用于存储后续录入的5个数值 - 通过
for循环固定执行5次录入操作,确保收集到要求数量的输入 - 最后用R向量取子集的语法,直接筛选出所有能被2整除的偶数输出,不需要额外判断分支
内容的提问来源于stack exchange,提问作者Cristian Mark Sagpao
相关产品推荐
相关产品推荐

