Java:构造函数和传递变量时出错
我试图以Java:构造函数和传递变量时出错,java,date,variables,constructor,Java,Date,Variables,Constructor,我试图以dd-mm-yyyy格式输入日期,并且必须以e格式返回。g9月29日星期二。我是Java新手,不确定我的day、month、year类的值是否返回到main。Date-date1=new-Date(day1,month1,year1)有一个错误,表示它未定义,并使其成为构造函数。如果我让它成为一个构造函数并运行程序,我会得到像lab2一样的值。Day@659e0bfd。不知道从这里到哪里去 package lab2; public class Calendar { //assume
dd-mm-yyyy
格式输入日期,并且必须以e格式返回。g<代码>9月29日星期二。我是Java新手,不确定我的day、month、year类的值是否返回到main。Date-date1=new-Date(day1,month1,year1)
有一个错误,表示它未定义,并使其成为构造函数。如果我让它成为一个构造函数并运行程序,我会得到像lab2一样的值。Day@659e0bfd
。不知道从这里到哪里去
package lab2;
public class Calendar {
//assume all months have 30 days and that 1 January is a Monday;
public static void main(String[] args) { // e.g. input: 29 09 2015
int in1 = Integer.parseInt(args[0]);
int in2 = Integer.parseInt(args[1]);
int in3 = Integer.parseInt(args[2]);
Day day1 = new Day(in1, in2); // string
Month month1 = new Month(in2); // string
Year year1 = new Year(in3); // integer
Date date1 = new Date(day1, month1, year1); //
date1.printName(); // e.g. "The date is Tuesday, 29th of September, 2015
}
}
“Date date1=新日期(day1,month1,year1)”有错误 说它是未定义的,并使它成为构造函数 因为在
Date
类中没有像Date(d天,m月,y年)
这样的参数化构造函数。它具有构造函数Date(字符串temp1、字符串temp2、int temp3)
。所以参数类型是不同的
而不是
Date date1 = new Date(day1, month1, year1);
使用
“Date date1=新日期(day1,month1,
第1年)“说它是未定义的,并使其成为构造函数。如果我
它是一个构造函数并运行程序,我得到的值如下
“lab2。Day@659e0bfd". 不知道从这里到哪里去
你得到了lab2。Day@659e0bfd因为您还没有实现toString()方法。在Day、Month和Year类中实现toString()方法,您将获得所需的结果。请检查下面的代码-
public class Day {
private int day;
private int month;
private int code;
private String name; //e.g. Tuesday
public Day(int dy, int mth ){
day = dy;
month = mth;
code = ((day*month) % 7);
// Assigning the day variable number to text //
switch (code) {
case 0: name = "Monday";
break;
case 1: name = "Tuesday";
break;
case 2: name = "Wednesday";
break;
case 3: name = "Thursday";
break;
case 4: name = "Friday";
break;
case 5: name = "Saturday";
break;
case 6: name = "Sunday";
break;
default: System.out.println("Incorrect Day Entered");}
}
@Override
public String toString() {
return name;
}
}
类似地,可以将toString()方法放在Month类中
public class Month {
private int month1;
private String monthName;
public Month(int temp1){
month1=temp1;
switch (month1) {
case 1: monthName = "January";
break;
case 2: monthName = "February";
break;
case 3: monthName = "March";
break;
case 4: monthName = "April";
break;
case 5: monthName = "May";
break;
case 6: monthName = "June";
break;
case 7: monthName = "July";
break;
case 8: monthName = "August";
break;
case 9: monthName = "September";
break;
case 10: monthName = "October";
break;
case 11: monthName = "November";
break;
case 12: monthName = "December";
break;
default: System.out.println("Incorrect Month Error");
@Override
public String toString() {
return monthName;
}
}
你的年班-
public class Year {
private int yearNumber;
public Year(int temp2)
{
yearNumber=temp2;
}
@Override
public String toString() {
return yearNumber;
}
}
我投票结束这个问题,因为这个问题属于主题。
Date date1 = new Date(day1, month1, year1);
Date date1 = new Date(day1.name, month1.monthName, year1.yearNumber);
public class Day {
private int day;
private int month;
private int code;
private String name; //e.g. Tuesday
public Day(int dy, int mth ){
day = dy;
month = mth;
code = ((day*month) % 7);
// Assigning the day variable number to text //
switch (code) {
case 0: name = "Monday";
break;
case 1: name = "Tuesday";
break;
case 2: name = "Wednesday";
break;
case 3: name = "Thursday";
break;
case 4: name = "Friday";
break;
case 5: name = "Saturday";
break;
case 6: name = "Sunday";
break;
default: System.out.println("Incorrect Day Entered");}
}
@Override
public String toString() {
return name;
}
}
public class Month {
private int month1;
private String monthName;
public Month(int temp1){
month1=temp1;
switch (month1) {
case 1: monthName = "January";
break;
case 2: monthName = "February";
break;
case 3: monthName = "March";
break;
case 4: monthName = "April";
break;
case 5: monthName = "May";
break;
case 6: monthName = "June";
break;
case 7: monthName = "July";
break;
case 8: monthName = "August";
break;
case 9: monthName = "September";
break;
case 10: monthName = "October";
break;
case 11: monthName = "November";
break;
case 12: monthName = "December";
break;
default: System.out.println("Incorrect Month Error");
@Override
public String toString() {
return monthName;
}
}
public class Year {
private int yearNumber;
public Year(int temp2)
{
yearNumber=temp2;
}
@Override
public String toString() {
return yearNumber;
}
}