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
相关产品推荐
相关产品推荐

