Java 编写包含3个子类和tester的约会超类。用户输入后,所有内容都会编译,但程序没有响应
实现一次、每天和每月的超类预约和子类预约。预约有一个描述(例如,“看牙医”),发生在一个或多个日期。编写一个方法occursOn(int year、int month、int day),检查约会是否发生在该日期。例如,对于每月约会,必须检查该月的日期是否匹配。然后用约会的混合物填充约会对象数组。让用户输入日期并打印出该日期发生的所有约会 应该已经创建了约会,你只是简单地要求用户提供一个日期来核对他们 每个子类中都有一个方法,用于检查约会是否发生在该日期(一次性)、日期(天)或月份(月)。要求用户输入要检查的日期。根据用户选择的内容,每个子类中的占用者应运行并显示任何匹配的约会和相关描述。对于一次性子类,占用人需要三个输入(年、月和日)进行验证;对于日子类,占用人需要一个输入(日)进行验证;对于月子类,占用人需要一个输入(月)进行验证。占用人对于不同的子类是不同的 测试仪应该没问题。我需要超类和子类来匹配tester类。我不确定我的代码的哪一部分不匹配 其中可能有一些代码与当前程序没有直接关系,因为我一直在尝试不同的方法来解决问题,但没有解决方案Java 编写包含3个子类和tester的约会超类。用户输入后,所有内容都会编译,但程序没有响应,java,inheritance,subclass,superclass,appointment,Java,Inheritance,Subclass,Superclass,Appointment,实现一次、每天和每月的超类预约和子类预约。预约有一个描述(例如,“看牙医”),发生在一个或多个日期。编写一个方法occursOn(int year、int month、int day),检查约会是否发生在该日期。例如,对于每月约会,必须检查该月的日期是否匹配。然后用约会的混合物填充约会对象数组。让用户输入日期并打印出该日期发生的所有约会 应该已经创建了约会,你只是简单地要求用户提供一个日期来核对他们 每个子类中都有一个方法,用于检查约会是否发生在该日期(一次性)、日期(天)或月份(月)。要求用户
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]);
}
}
}
}
公共课堂预约{
私人国际日;
私人整数月;
私人国际年;
私有字符串描述;
public int getDay()
{
回归日;
}
/**
*@param patientName设置患者姓名
*/
公共无效设定日(整数日)
{
this.day=天;
}
/**
*
*/
公共整数getMonth()
{
返回月份;
}
/**
*@param patientName设置患者姓名
*/
公共无效设置月(整数月)
{
本月=月;
}
/**
*
*/
公共int getYear()
{
回归年;
}
/**
*@param patientName设置患者姓名
*/
公共年(国际年)
{
今年=年;
}
/**
*
公共字符串getDescription()
{
返回说明;
}
*/
/**
*@param patientName设置患者姓名
公共void集合描述(字符串描述)
{
this.description=描述;
}
*/
布尔占位符(整数天、整数月、整数年)
{
如果((this.day==day)| |(this.month==month)| | |(this.year==year))
{
返回true;
}
其他的
{
返回false;
}
}
/**
将约会转换为字符串描述
*/
公共字符串toString()
{
返回说明;
}
}
导入java.util.ArrayList;
公共课每日延长预约{
《私人ArrayListdaily》;
公共日报(整数天、整数月、整数年、字符串描述)
{
每日=新的ArrayList();
}
公共布尔占用人(整数日)
{
每日。添加(天);
{
字符串whatDay=“”+daily.size();
}
返回true;
}
}
导入java.util.ArrayList;
公营班级每月延长预约{
每周一次的私人庭审;
公共每月(整数天、整数月、整数年、字符串说明)
{
每月=新的ArrayList();
}
公共布尔占用人(整数月)
{
每月。添加(月);
{
字符串whatMonth=“”+monthly.size();
}
返回true;
}
导入java.util.ArrayList;
公共类一次性延长预约时间{
私人时间;
任命;
公共一次性(整数天、整数月、整数年、字符串描述)
{
oneTime=newarraylist();
}
公共布尔占用人(整数天、整数月、整数年)
{
一次性。添加(一次约会);
{
字符串whatMonthDayYear=“+oneTime.size();
}
返回true;
}
导入java.util.Scanner;
公开班级任命演示{
公共静态void main(字符串[]args){
任命[]任命=新任命[4];
预约[0]=新日报(2018年2月10日,“刷牙”);
预约[1]=新月刊(2018年2月10日,“刷牙”);
约会[2]=新的一次性(2018年2月10日,“刷牙”);
System.out.println(“输入日期(月、日、年)以列出“+”约会:”;
扫描仪输入=新扫描仪(系统输入);
int month=in.nextInt();
int day=in.nextInt();
int year=in.nextInt();
for(int i=0;i<0.length;i++){
if(任命[i].占用人(月、日、年)){
系统输出打印LN(预约[i]);
}
}
}
}
当前没有错误消息。用户输入后,程序不会响应。感谢您的帮助!java.util.Scanner仍在等待完全输入,因此不会发生任何事情。(感谢@csabinho)
好的,假设您输入了任意三个数字。您将得到一个NullPointerException,因为
Appointment[]
数组中的每个Appointment
对象都有一个null
日
、月
和年。
没有一个构造函数实际定义您的变量。Appointment[]约会=新约会[4];
在最后一段代码中:为什么有一个未使用的索引?是否输入了3个数字?下次,请尝试使用System.out.print()语句调试程序,以查找整个程序中的变量值。