Java Magic Date Assignment

时间:2014-03-09 17:23:30

标签: java

1960年6月10日的日期很特别,因为当我们按照以下格式编写日期时,每天的月份时间等于年份。 6/10/60

设计一个名为Magic Date(DONE)的类。类构造函数应该接受一个月,一天,一年的值作为整数。 (完成)。该类还应该有一个名为isMagic的方法,如果传递给构造函数的日期是魔术,则返回true,否则返回false(我有方法Done): 编写一个程序,要求用户输入一个月,一天,两位数年份的整数(完成)程序应创建一个MagicDate类的实例,以确定用户输入的日期是否为魔术日期。如果是,程序应显示一条消息,说明日期是魔术。否则它应显示一条消息,说日期不是魔术。(需要帮助) 需要帮助的是让它返回一个值。凭借我现在拥有的东西,即使每天*月不= =年,它也总是会返回魔法 这是我的代码。

public class MagicDate 
{
    int month;
    int day;
    int year;
    int value;
    public MagicDate(int month, int day, int year) 
    {

    }
         public void isMagic()
         {
             if (month * day == year)
              System.out.println("Magic");
             else 
              System.out.println("Not Magic");
         }





}

和驱动程序

public void challenge16()
    {
        int month;
        int day;
        int year;
        System.out.println("Please enter a month");
        month = keyboard.nextInt();
        System.out.println("Please enter a day");
        day = keyboard.nextInt();
        System.out.println("Please enter a year");
        year = keyboard.nextInt();
        MagicDate magicdate1 = new MagicDate(month, day, year);
        magicdate1.isMagic();

    }
}

我是新手,这是我的第一个学期所以这可能是一个愚蠢的错误所以我道歉。我也尝试了这样的方法,但没有得到任何返回值。

public boolean isMagic()
    if (day * month ==year)
        return True;
    else
        return False

1 个答案:

答案 0 :(得分:1)

您的MagicDate类无法正常工作,因为您从未在实例字段中存储赋予构造函数的参数。因此,实例字段始终具有默认值(0)。

如果要存储传入的值,则必须在代码中执行此操作:

public MagicDate(int month, int day, int year) 
{
    this.month = month;
    this.day   = day;
    this.year  = year;

    // You might consider initializing `value` here as well, but I
    // have no idea what it's for, so I can't give an example.
}

完成此操作后,您的isMagic方法应该开始工作,因为您依赖于隐式this。也就是说,因为在该方法中你没有在year范围内有任何其他内容(例如),当你引用它时,你指的是this.year,这是我们存储的字段构造函数中的初始值。也就是你的代码:

public void isMagic()
{
    if (month * day == year)
        System.out.println("Magic");
    else 
        System.out.println("Not Magic");
}

实际上相当于此,更清楚:

public void isMagic()
{
    if (this.month * this.day == this.year)
        System.out.println("Magic");
    else 
        System.out.println("Not Magic");
}

(我更喜欢总是使用this.表单,即使在 - 如上面的代码中 - 暗示。但是你可以将其关闭。)