为什么我的班级日期代码出现此错误?

时间:2015-02-15 04:32:08

标签: c#

对于本课程,我试图以3种不同的格式显示日期。 mm-dd-yyyy,yyyy-mm-dd和月dd,yyyy

我一直收到错误"无法从字符串转换为int"当我尝试运行我的程序。但是,我没有在我的任何方法中故意使用字符串。我做错了什么?

using System;

public class Date
{
    private int month;
    private int date;
    private int year; 
    private int parameter;

    public int getmonth()
    {
        return month;
    }
    public void setmonth(int m)
    { 
        month = m;
    }
    public int getdate()
    {
        return date;
    }
    public void setdate(int d)
    {
        date = d;
    }
    public int getyear()
    {
        return year;
    }
    public void setyear(int y)
    {
        year = y;
    }
    public int getparameter()
    {
        return parameter;
    }
    public void setparameter(int p)
    {
        parameter = p;
        if (p <= 3)
        {
            if (p == 1)
            {
                setmonth("1");
                setdate(22);
                setyear(2015);
            }
            else if (p == 2)
            {
                setyear(2015);
                setmonth("2");
                setdate(20);
            }
            else if (p == 3)
            {
                setmonth("March");
                setdate(10);
                setyear(2015);
            }
        }
    }

}

class DateTest
{
    static void Main(string[] args)
    {
        Date Dave = new Date (1);
        Console.WriteLine("The Date is {0}", Dave.getparameter());
        Console.WriteLine("Press any key to close");
        Console.ReadKey();
    }
}

2 个答案:

答案 0 :(得分:1)

您正在使用:

setmonth("1");
// ...
setmonth("2");
// ...
setmonth("March");

setmonth的签名是

public void setmonth(int m)
{ 
    month = m;
}

您无法将字符串隐式转换为int。使用setmonth(int.Parse("1"))等。或者使用int值而不是string来调用它。或者将两者结合起来,可以重载方法:

public void setmonth(int m)
{ 
    month = m;
}

public void setmonth(string m)
{ 
    month = int.Parse(m);
}

使用它你应该能够传递一个int或一个字符串,它将同时工作。

答案 1 :(得分:1)

您正在将字符串传递给在此行上接受int的方法:

setmonth("1");

您将setmonth定义为采用int:

public void setmonth(int m)

您可以将setmonth来电更改为

setmonth(1);

同样适用于其他setmonth次来电。