java编写约会超类,包含3个子类和tester。用户输入后,所有内容都会编译,但程序没有响应
实现一次、每天和每月的超类预约和子类预约。预约有一个描述(例如,“看牙医”),发生在一个或多个日期。编写一个方法occursOn(int year、int month、int day),检查约会是否发生在该日期。例如,对于每月约会,必须检查该月的日期是否匹配。然后用约会的混合物填充约会对象数组。让用户输入日期并打印出该日期发生的所有约会
应该已经创建了约会,你只是简单地要求用户提供一个日期来核对他们
每个子类中都有一个方法,用于检查约会是否发生在该日期(一次性)、日期(天)或月份(月)。要求用户输入要检查的日期。根据用户选择的内容,每个子类中的占用者应运行并显示任何匹配的约会和相关描述。对于一次性子类,占用人需要三个输入(年、月和日)进行验证;对于日子类,占用人需要一个输入(日)进行验证;对于月子类,占用人需要一个输入(月)进行验证。占用人对于不同的子类是不同的
测试仪应该没问题。我需要超类和子类来匹配tester类。我不确定我的代码的哪一部分不匹配
其中可能有一些代码与当前程序没有直接关系,因为我一直在尝试不同的方法来解决问题,但没有解决方案
public class Appointment{
private int day;
private int month;
private int year;
private String description;
public int getDay()
{
return day;
}
/**
* @param patientName sets patient name
*/
public void setDay(int day)
{
this.day = day;
}
/**
*
*/
public int getMonth()
{
return month;
}
/**
* @param patientName sets patient name
*/
public void setMonth(int month)
{
this.month = month;
}
/**
*
*/
public int getYear()
{
return year;
}
/**
* @param patientName sets patient name
*/
public void setYear(int year)
{
this.year = year;
}
/**
*
public String getDescription()
{
return description;
}
*/
/**
* @param patientName sets patient name
public void setDescription(String description)
{
this.description = description;
}
*/
boolean occursOn (int day, int month, int year)
{
if( (this.day == day) || (this.month == month) || (this.year == year))
{
return true;
}
else
{
return false;
}
}
/**
Converts appointment to string description
*/
public String toString()
{
return description;
}
}
import java.util.ArrayList;
public class Daily extends Appointment{
private ArrayList<Integer>daily;
public Daily(int day, int month, int year, String description)
{
daily = new ArrayList<Integer>();
}
public boolean occursOn (int day)
{
daily.add(day);
{
String whatDay = "" + daily.size();
}
return true;
}
}
import java.util.ArrayList;
public class Monthly extends Appointment{
private ArrayList<Integer>monthly;
public Monthly(int day, int month, int year, String description)
{
monthly = new ArrayList<Integer>();
}
public boolean occursOn (int month)
{
monthly.add(month);
{
String whatMonth = "" + monthly.size();
}
return true;
}
import java.util.ArrayList;
public class OneTime extends Appointment{
private ArrayList<Integer>oneTime;
int oneAppointment;
public OneTime(int day, int month, int year, String description)
{
oneTime = new ArrayList<Integer>();
}
public boolean occursOn (int day, int month, int year)
{
oneTime.add(oneAppointment);
{
String whatMonthDayYear = "" + oneTime.size();
}
return true;
}
import java.util.Scanner;
public class AppointmentDemo{
public static void main(String[] args){
Appointment[] appointments = new Appointment [4];
appointments[0] = new Daily (2, 10, 2018, "Brush your teeth.");
appointments[1] = new Monthly (2, 10, 2018, "Brush your teeth.");
appointments[2] = new OneTime (2, 10, 2018, "Brush your teeth.");
System.out.println("Enter a date (month, day, year) to list" + "appointments: ");
Scanner in = new Scanner(System.in);
int month = in.nextInt();
int day = in.nextInt();
int year = in.nextInt();
for (int i = 0; i < appointments.length; i++){
if (appointments[i].occursOn(month, day, year)){
System.out.println(appointments[i]);
}
}
}
}
当前没有错误消息。程序在用户输入后不响应。谢谢你的帮助
# 1 楼答案
java.util.Scanner
仍在等待完整的输入,因此什么也没有发生。(感谢@csabinho)好吧,假设您输入了任意三个数字。您将得到一个NullPointerException,因为}、
appointments[]
数组中的每个Appointment
对象都有一个null
{month
和year.
构造函数实际上都没有定义您的变量