我正在尝试解决我在网站上发现的一些问题,并且已经感到困惑。 它是这样的:写一个C#程序检查输入的年份是否是闰年。当A年除以4.如果余数变为0,那么年份称为闰年..
提供的解决方案是:
/*
* C# Program to Check Whether the Entered Year is a Leap Year or Not
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Program
{
class leapyear
{
static void Main(string[] args)
{
leapyear obj = new leapyear();
obj.readdata();
obj.leap();
}
int y;
public void readdata()
{
Console.WriteLine("Enter the Year in Four Digits : ");
y = Convert.ToInt32(Console.ReadLine());
}
public void leap()
{
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
{
Console.WriteLine("{0} is a Leap Year", y);
}
else
{
Console.WriteLine("{0} is not a Leap Year", y);
}
Console.ReadLine();
}
}
}
所以,在第一行,他们宣布了leapyear。看来这是一种类型,不是吗?或者提到班级名称? 然后他们称之为'obj',然后引用obj.readdata等。
我很失落这里发生的事情,如果有人可以帮我解释一下这个问题吗?谢谢
答案 0 :(得分:1)
您的示例代码很奇怪。如果我进行代码审查,它会引发至少两个标志。也许它是由Java编码器编写的?考虑这个例子,也许它更容易理解:
using System;
namespace Program
{
// this is a class. Because there are no free functions in C#,
// everything has to be in a class.
internal static class LeapYearFinderApplication
{
// this is the main entry point for your application
internal static void Main()
{
Console.WriteLine("Enter the Year in Four Digits : ");
var inputYear = Convert.ToInt32(Console.ReadLine());
var inputYearIsLeapYear = IsLeapYear(inputYear);
if (inputYearIsLeapYear)
{
Console.WriteLine("{0} is a Leap Year", inputYear);
}
else
{
Console.WriteLine("{0} is not a Leap Year", inputYear);
}
Console.ReadLine();
}
internal static bool IsLeapYear(int year)
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
}
答案 1 :(得分:0)
这里leapyear只是你的app类的名字。它被实例化,因此它可以调用函数readdata和leap。
尝试在没有leapyear的情况下调用readdata,它将无法正常工作,因为它在类leapyer中。
我希望它能帮到你!
答案 2 :(得分:0)
这很有趣!刚刚完成第一个:) https://projecteuler.net/
答案 3 :(得分:-1)
在第一行,leapyear是一个clsaa,obj是Main(静态)函数中的类leapyear的对象。
因此,在静态函数中,非静态成员(readdata()和leap())需要引用。