C#如何在for循环中存储用户输入的多条数据
代码调整方案
核心逻辑:在循环外部预先定义存储用的集合,每次循环读取用户输入、判断完类型后,直接将已经读取到的数值存入对应集合即可,不需要在判断分支重复调用Console.ReadLine()要求用户二次输入。
调整后的完整参考代码
using System.Collections.Generic; // 需要先引入该命名空间使用List集合 // 循环外部提前声明存储容器,避免每次循环被销毁 List<int> primeNumbers = new List<int>(); // 存储所有判定为质数的输入值 List<int> compositeNumbers = new List<int>(); // 存储所有判定为合数的输入值 // 此处INum为你预先定义的需要输入的数值总个数 for (int i = 0; i < INum; i++) { Console.Write("{0} Number: ", i); int Vnum = int.Parse(Console.ReadLine()); int a, b = 0, c = 0; b = Vnum / 2; for (a = 2; a <= b; a++) { if (Vnum % a == 0) { Console.WriteLine("Composite"); compositeNumbers.Add(Vnum); // 直接存入当前输入值到合数集合 c = 1; break; } } if (c == 0) { Console.WriteLine("Prime"); primeNumbers.Add(Vnum); // 直接存入当前输入值到质数集合 } } // 后续需要使用存储的数据时直接操作对应集合即可,示例:打印所有输入的质数 Console.WriteLine("所有输入的质数:"); foreach (var num in primeNumbers) { Console.Write(num + " "); }
关键改动说明
- 存储容器必须声明在循环外部:如果定义在循环内部,每次迭代结束后变量就会被销毁,无法留存之前输入的所有数据
- 删除了判断分支中多余的输入读取逻辑:你已经在循环开头通过
int Vnum = int.Parse(Console.ReadLine());拿到了当前用户输入的数值,直接存储该变量值即可,不需要重复调用读取输入的方法要求用户二次输入 - 如果不需要区分质数合数仅存储所有输入值,额外声明一个
List<int> allInputNumbers = new List<int>();,在读取到Vnum后直接调用allInputNumbers.Add(Vnum)即可
内容的提问来源于stack exchange,提问作者JFrost
相关产品推荐
相关产品推荐

