有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    java.util.Scanner仍在等待完整的输入,因此什么也没有发生。(感谢@csabinho)

    好吧,假设您输入了任意三个数字。您将得到一个NullPointerException,因为appointments[]数组中的每个Appointment对象都有一个null{}、monthyear.构造函数实际上都没有定义您的变量