Java set方法不起作用
我在做我的一个项目,不能真正使用我的方法。我的集合构造函数不起作用。我是新来的,需要帮助。如果你们能帮我,那将是一个很大的帮助。谢谢 我的班级是: 我设置了构造器,听说是这样的:Java set方法不起作用,java,date,methods,Java,Date,Methods,我在做我的一个项目,不能真正使用我的方法。我的集合构造函数不起作用。我是新来的,需要帮助。如果你们能帮我,那将是一个很大的帮助。谢谢 我的班级是: 我设置了构造器,听说是这样的: // set constructor public date (int a,int b,int c) //(day,month,year) { if (a <1) { day = 1; a = day; } if (b<1
// set constructor
public date (int a,int b,int c) //(day,month,year)
{
if (a <1)
{
day = 1;
a = day;
}
if (b<1)
{
month = 1;
b = month;
}
if (c<1900)
{
year = 1900;
c = year;
}
else
{
a = day;
b = month;
c = year;
}
}
我的主要课程是:
输出为:
一,
1900年
0
我试着检查所有我甚至试着改变值的东西,但没有任何效果。我得到的唯一结果是1和1900。许多赋值语句都是向后的。等号右边的表达式分配给左边的变量。以下是它们的外观:
public date(int a, int b, int c) {
if (a < 1)
a = 1;
if (b < 1)
b = 1;
if (c < 1900)
c = 1900;
day = a;
month = b;
year = c;
}
二传手也有类似的问题。不要指定给参数,而是指定给实例变量
public void setDay(int a) {
if (a < 1)
a = 1;
day = a;
}
public void setMonth(int a) {
if (a < 1)
a = 1;
month = a;
}
public void setYear(int a) {
if (a < 1990)
a = 1990;
year = a;
}
注意:对于更可读的代码,请使用更好的参数名称。也许您应该根据setter使用d、m或y,而不是重用a。此外,典型的Java命名约定总是将类名的第一个字母大写,因此您应该使用日期而不是日期。您只需要设置小于1的日期和月份,以及小于1990的年份。你可能应该把它们翻过来。问题在于你的变量赋值。 您可以使用以下命令压缩代码:
a=天;-这能实现什么?我建议您阅读关于Java类、getter和setter的教程,以及关于条件语句的阅读。您的setter将分别接受小于1和1900的数字。您应该重写它以接受任何数值。您上面的代码表明您需要阅读更多关于Java的教程以提高速度。OMG感谢您,现在它工作得很好。谢谢你是一个活生生的保护程序。虽然正确,三元运算符对于一个新手程序员来说有点过分。
//Accsessors
public int getDay ()
{
return day;
}
public int getMonth ()
{
return month;
}
public int getYear ()
{
return year;
}
}
public class checkDate {
public static void main (String [] args)
{
date year1 = new date();
date year2 = new date (21,3,1995);
year1.setDay(13);
year1.setMonth(12);
year1.setYear(2010);
System.out.println(year1.getDay());
System.out.println(year1.getYear());
System.out.println(year2.getYear());
}
}
public date(int a, int b, int c) {
if (a < 1)
a = 1;
if (b < 1)
b = 1;
if (c < 1900)
c = 1900;
day = a;
month = b;
year = c;
}
public void setDay(int a) {
if (a < 1)
a = 1;
day = a;
}
public void setMonth(int a) {
if (a < 1)
a = 1;
month = a;
}
public void setYear(int a) {
if (a < 1990)
a = 1990;
year = a;
}
public class Date{
private int day;
private int month;
private int year;
public Date(int d, int m, int y){
day = d<1 ? 1 : d;
month = m<1||m>12 ? 1 : m;
year = y<1900 ? 1990 : y;
}
public int getDay(){
return day;
}
...
public void setDay(int d){
day = d<1 ? 1 : d;
}
...
}