如何为C#素数查找程序添加结果保存至文件的询问菜单?
修改后的素数查找程序(含保存功能)
没问题!我已经帮你修改了这段素数查找的C#代码,添加了询问是否保存结果到文件的交互菜单,同时实现了保存功能。下面是更新后的完整代码,以及关键改动的说明:
关键改动点
- 新增
List<int>存储找到的素数,方便后续输出与文件写入,避免重复计算 - 添加交互式询问菜单,让用户自主选择是否保存结果
- 引入
System.IO命名空间,实现文件写入功能,默认将素数保存到程序运行目录下的primes.txt文件 - 增加用户输入合法性判断与异常捕获,提升程序健壮性
完整代码
using System; using System.Collections.Generic; using System.IO; using System.Linq; public class Exercise34 { public static void Main() { int num, i, ctr, stno, enno; // 用于存储找到的素数 List<int> primes = new List<int>(); Console.Write("\n\n"); Console.Write("Find the prime numbers within a range of numbers:\n"); Console.Write("---------------------------------------------------"); Console.Write("\n\n"); Console.Write("Input starting number of range: "); stno = Convert.ToInt32(Console.ReadLine()); Console.Write("Input ending number of range : "); enno = Convert.ToInt32(Console.ReadLine()); Console.Write("The prime numbers between {0} and {1} are : \n", stno, enno); for (num = stno; num <= enno; num++) { ctr = 0; for (i = 2; i <= num / 2; i++) { if (num % i == 0) { ctr++; break; } } if (ctr == 0 && num != 1) { primes.Add(num); Console.Write("{0} ", num); } } Console.Write("\n"); // 询问是否保存结果到文件 Console.WriteLine("\n是否要将找到的素数保存到文件中?(Y/N)"); string input = Console.ReadLine().Trim().ToUpper(); if (input == "Y") { try { // 将素数转换为字符串数组并写入文件 File.WriteAllLines("primes.txt", primes.Select(p => p.ToString())); Console.WriteLine("素数已成功保存到当前目录下的 primes.txt 文件!"); } catch (Exception ex) { Console.WriteLine($"保存失败:{ex.Message}"); } } else if (input == "N") { Console.WriteLine("已取消保存操作。"); } else { Console.WriteLine("输入无效,已取消保存操作。"); } // 可选:让程序暂停,方便查看结果 Console.WriteLine("\n按任意键退出..."); Console.ReadKey(); } }
功能说明
- 素数存储:使用
List<int>收集所有符合条件的素数,后续输出和保存都基于这个列表,避免了重复遍历计算。 - 交互询问:程序结束前会提示用户输入Y或N,判断是否执行保存操作。
- 文件保存:如果用户选择保存,程序会在当前运行目录生成
primes.txt文件,每行一个素数。同时添加了异常捕获,处理可能的权限不足、磁盘空间不足等问题。 - 健壮性优化:对用户输入的Y/N做了大小写转换和修剪,同时处理了非预期输入的情况。
内容的提问来源于stack exchange,提问作者tynai cha
相关产品推荐
相关产品推荐

