You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串内执行运算报错:运算符'%'无法应用于string和int类型如何解决

问题根源

你声明的year变量是Console.ReadLine()的返回值,天生为string字符串类型。你虽然写了int.Parse(year)做类型转换,但只是把转换后的结果存到了arr1[i]里,后续取模运算、和0比较的操作依然用的是字符串类型的year,自然会触发「运算符无法应用于字符串和整数」的报错。

修正方案

你需要把转换后的整型值存到单独的变量里,后续所有逻辑都用这个整型变量操作。另外你现有代码里的while (year != 0)属于无效逻辑,会触发死循环,建议直接删掉。
修正后的代码参考:

int i = 0;
// 年份是整数,不需要用double数组
int[] arr1 = new int[20];                                                        
for (i = 0; i < 20; i++)
{
    Console.Write("Enter a number (0=stop): ");
    var input = Console.ReadLine(); 
    if (input == "0") break;
    // 转换后存为整型变量
    int year = int.Parse(input);
    arr1[i] = year;

    // 去掉多余的while循环,直接判断即可
    if (year < 0)
    {
        Console.WriteLine($"Year must be positive!");
    }
    else if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
    {
        Console.WriteLine($"{year} is a leap year.");
    }
    else
    {
        Console.WriteLine($"{year} is not a leap year.");
    }
}

同类问题注意事项

  • C#中Console.ReadLine()的返回值固定为string类型,只要做数值运算、数值比较,必须先转成对应的整型、浮点型
  • 实际生产环境建议用int.TryParse()做类型转换,可以兼容用户输入非数字的异常场景,避免程序直接崩溃

内容的提问来源于stack exchange,提问作者FunnyGuy420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:15:04