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

C#中包含if语句的public void方法无法执行问题求助

你的代码存在以下几个问题:

  • 程序入口Main方法中从未调用YearNotOdd方法,代码执行完输入和变量赋值逻辑后就直接结束,自然不会执行你写的判断逻辑
  • YearNotOdd是实例方法,静态的Main方法无法直接调用,要么将方法改为静态,要么先实例化Program类再调用
  • 输出语句中使用了@前缀但没有加$插值标记,字符串内的{变量名}不会被解析为变量,会原样输出
  • 最外层判断逻辑错误:你写的if (InputYear == 0)意味着只有输入年份为0时才会进入闰年判断分支,其余所有年份都会直接走else输出非闰年,完全不符合闰年判断的业务逻辑
  • Yes/No/DivBy/LeapYear四个字符串变量是非静态成员,静态方法或者静态上下文无法直接访问,需要改为静态成员

修正后的完整可运行代码如下:

public class Program
{
    static int InputYear;
    static int YearDiv4;
    static int YearDiv100;
    static int YearDiv400;
    static string Yes = "Yes";
    static string No = "No";
    static string DivBy = "Divisible by ";
    static string LeapYear = "Leap Year: ";

    public static void Main(string[] args)
    {
        Console.WriteLine("Please enter a year value:");
        InputYear = Convert.ToInt32(Console.ReadLine());
        YearDiv4 = InputYear % 4;
        YearDiv100 = InputYear % 100;
        YearDiv400 = InputYear % 400;

        Console.WriteLine($"Year entered: {InputYear}");
        // 调用闰年判断方法
        YearNotOdd();
    }

    // 改为静态方法适配静态Main调用
    public static void YearNotOdd()
    {
        Console.WriteLine("It runs");
        // 修正为正确的闰年判断逻辑
        if (YearDiv4 == 0)
        {
            if (YearDiv100 == 0)
            {
                if (YearDiv400 == 0)
                {
                    Console.WriteLine($"{DivBy} 4: {Yes}");
                    Console.WriteLine($"{DivBy} 100: {Yes}");
                    Console.WriteLine($"{DivBy} 400: {Yes}");
                    Console.WriteLine(LeapYear + Yes);
                }
                else
                {
                    Console.WriteLine($"{DivBy} 4: {Yes}");
                    Console.WriteLine($"{DivBy} 100: {Yes}");
                    Console.WriteLine($"{DivBy} 400: {No}");
                    Console.WriteLine(LeapYear + No);
                }
            }
            else
            {
                Console.WriteLine($"{DivBy} 4: {Yes}");
                Console.WriteLine($"{DivBy} 100: {No}");
                Console.WriteLine($"{DivBy} 400: {No}");
                Console.WriteLine(LeapYear + Yes);
            }
        }
        else
        {
            Console.WriteLine($"{DivBy} 4: {No}");
            Console.WriteLine($"{DivBy} 100: {No}");
            Console.WriteLine($"{DivBy} 400: {No}");
            Console.WriteLine(LeapYear + No);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:04