如何使用set方法设置和检索数据

时间:2016-03-10 05:18:11

标签: java

我有类Date和类DateTest。我试图让用户输入日期,我必须使用get / set方法和构造函数正确格式化它。但是当我尝试在输入后检索日期时,我只会得到零。

我的代码:

public class Date
{

private int month;

private int day;

private int year;

    public Date(int m, int d, int y){
    month = m;
    day = d;
    year = y;

    }

        public void setMonth(int Month) {

        this.month = month;
    }

    public int getMonth(){

        return month;

    }


    public void setDay(int Day) {

        this.day = day;
    }

    public int getDay(){

        return day;

    }


        public void setYear(int Year) {

        this.year = year;
    }

    public int getYear(){

        return year;

    }

    public String displayDate(){

        return String.format("%d / %d / %d", month, day, year);
    }


}

和DateTest类:

import java.util.Scanner;

public class DateTest

{

public static void main( String[] args)
{

    Scanner input = new Scanner(System.in);

    Date myDate = new Date(0, 0, 0);


    System.out.println("Please enter the month:");
    int month = input.nextInt();
    myDate.setMonth(month);
    System.out.println();

    System.out.println("Please enter the day:");
    int day = input.nextInt();
    myDate.setDay(day);
    System.out.println();

    System.out.println("Please enter the year:");
    int year = input.nextInt();
    myDate.setYear(year);
    System.out.println();



    System.out.printf("The date is %s%n", myDate.displayDate());



}
}

这是我的输出:

  

请输入月份:   3

     

请输入当天:   10

     

请输入年份:   2016

     

日期为0/0/0

它只显示为零。我确信这是一个简单的解决方案,但我无法理解。

3 个答案:

答案 0 :(得分:4)

public void setYear(int Year) {
   this.year = year;
}

Java区分大小写。 Yearyear不同。

您在这里所做的只是分配this.year = this.year

将参数签名的名称更改为int year(这也符合通常以小写字母开头的命名约定。)

所有三位二人都有同样的问题。

答案 1 :(得分:0)

  • this.month = month;替换为this.month = Month;
  • this.day = day;替换为this.day= Day;
  • this.year= year;替换为this.year= Year;

希望你遇到问题,你需要将成员变量分配给在参数中传递的成员变量,而不是分配给自身的成员变量。

public void setDay(int Day) {

    this.day = day;
}

答案 2 :(得分:0)

您在以下内容中传递的参数:public void setMonth(int Month)public void setDay(int Day)public void setYear(int Year)必须同意与您引用参数的位置,例如{{在这种情况下,1}}必须是this.day = day;。这意味着名称必须输入完全相同,或者您指的是this.day = Day;两次,因此不会更改其值,而是引用并将其设置为默认值day。基本上,只需要了解哪个变量名称放在0的右侧。但是,Java编程确实有命名约定,您可能需要查看here。但这是一个快速的概述:

A table displaying the basics of Java naming conventions 点击here查看大图。