C#程序编译报错修复 输入负数时退出功能实现咨询
功能实现说明
完全可以实现用户输入负数时退出程序的效果,你当前的代码存在几处编译错误和逻辑问题,逐一修复即可正常运行。
现有代码的错误点
- 变量重复定义:已经在方法开头声明了
int input;,后续又写int input=Console.ReadLine();重复声明同名变量,会直接触发编译报错。 - 类型不匹配:
Console.ReadLine()方法返回值是string类型,无法直接赋值给int类型的变量。 - 未定义集合变量:代码末尾遍历的
numbers集合从未声明、初始化,也没有写入有效输入的逻辑,会触发编译错误。 - 逻辑顺序混乱:输出输入提示后第一次读取的输入没有做任何判断、存储就被覆盖,属于无效逻辑。
修复方案
- 提前初始化
List<int>类型的numbers集合,用来存储所有用户输入的合法正整数。 - 删除重复的
input变量声明,读取用户输入后统一做类型转换。 - 调整循环逻辑:每次读到用户输入的数值后,先判断是否为负数(如果需要0也触发退出就保留
<=0判断,仅负数退出就改成<0),满足退出条件就直接跳出循环,否则将数值存入集合。 - (可选优化)用
int.TryParse代替int.Parse,避免用户输入非数字内容时程序直接崩溃。
修复后可运行代码
using System; using System.Collections.Generic; class Program { static void Main() { // 初始化存储输入的集合 List<int> numbers = new List<int>(); int input; Console.WriteLine("Input a number (input a negative number to exit):"); while (true) { // 读取输入并转成整数 string readStr = Console.ReadLine(); // 处理非数字输入的情况 if (!int.TryParse(readStr, out input)) { Console.WriteLine("Please input a valid integer!"); continue; } // 输入负数时退出循环 if (input < 0) { break; } // 合法正整数存入集合 numbers.Add(input); } Console.Write("Your valid input: "); foreach (int number in numbers) { Console.Write(number + " "); } } }
如果需要输入0也触发退出,只需要把循环里的判断条件从
input < 0改成input <= 0即可。
内容的提问来源于stack exchange,提问作者Musta_Jaguaari
相关产品推荐
相关产品推荐

