Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保存用户输入的记录-Java_Java_Arrays - Fatal编程技术网

保存用户输入的记录-Java

保存用户输入的记录-Java,java,arrays,Java,Arrays,我正在用Java制作一个事件调度器,到目前为止,我只能添加一个事件。但是,我希望能够添加多个事件并能够显示它们,但我能想到的唯一其他选项是使用数组 我还有一个名为numOfCreatedEvents的计数器,用于跟踪事件以及创建事件时的增量 用户输入示例 输入事件ID:A12 输入事件标题:Lorem Ipsum 输入费用:$10.0 输入最大与会者限制:15 输入开始时间:14 以分钟为单位输入持续时间:120 输入要求(可选):穿鞋。 下面是我的程序试图使用数组,但是当我调用setter方法

我正在用Java制作一个事件调度器,到目前为止,我只能添加一个事件。但是,我希望能够添加多个事件并能够显示它们,但我能想到的唯一其他选项是使用数组

我还有一个名为
numOfCreatedEvents
的计数器,用于跟踪事件以及创建事件时的增量

用户输入示例

输入事件ID:
A12

输入事件标题:
Lorem Ipsum

输入费用:$
10.0

输入最大与会者限制:
15

输入开始时间:
14

以分钟为单位输入持续时间:
120

输入要求(可选):
穿鞋。

下面是我的程序试图使用数组,但是当我调用setter方法时,它们有一个错误(在下面的代码中标记)

Event.java

问题:调用
printDetails()
列出所有事件时,如何添加多个事件并保留它们的记录


谢谢你的帮助

我100%清楚你的期望是什么。但是从代码中可以看出,您试图将
String
值设置为需要字符串数组的方法。i、 e.
String[]

我建议删除数组实现并替换为
List
。例如:

private List<String> ID;

public void setID( String i )
{
    if( ID == null )
    {
        ID= new ArrayList<>();
    }
    ID.add( i );
}

public List<String> getID() 
{
   return ID;
}
私有列表ID;
公共void setID(字符串i)
{
if(ID==null)
{
ID=新的ArrayList();
}
ID.add(i);
}
公共列表getID()
{
返回ID;
}

对所有变量执行此操作。即
ID
Title
baseFee
maxAttendeeLimit
开始时间
持续时间
要求
。因为数组是固定类型,创建后不能增加现有数组的大小。访问循环中的元素,如
ID.get(i)

我100%清楚您的期望是什么。但是从代码中可以看出,您试图将
String
值设置为需要字符串数组的方法。i、 e.
String[]

我建议删除数组实现并替换为
List
。例如:

private List<String> ID;

public void setID( String i )
{
    if( ID == null )
    {
        ID= new ArrayList<>();
    }
    ID.add( i );
}

public List<String> getID() 
{
   return ID;
}
私有列表ID;
公共void setID(字符串i)
{
if(ID==null)
{
ID=新的ArrayList();
}
ID.add(i);
}
公共列表getID()
{
返回ID;
}

对所有变量执行此操作。即
ID
Title
baseFee
maxAttendeeLimit
开始时间
持续时间
要求
。因为数组是固定类型,创建后不能增加现有数组的大小。在循环中访问像
ID.get(i)
这样的元素错误是因为您的setter方法希望接收数组(在方法头中的类型后面用“[]”表示),但是您标记为错误的位置正试图只发送给定类型的一段数据。我认为最好是创建一个对象来表示事件,然后使用一个数组来存储这些对象。下面是一个快速的模型:

在名为CalendarEvent.java的文件中:

public class CalendarEvent {

    private String ID;
    private String title;
    private double baseFee;
    private int maxAttendeeLimit;
    private int startTime;
    private int durationTime;
    private String requirements;

    // Getters
    public String getID() { return this.ID; }
    public String getTitle() { return this.title; }
    public double getBaseFee() { return this.baseFee; }
    public int getMaxAttendeeLimit() { return this.maxAttendeeLimit; }
    public int getStartTime() { return this.startTime; }
    public int getDurationTime() { return this.durationTime; }
    public String getRequirements() { return this.requirements; }

    // Setters
    public void setID(String ID) { this.ID = ID; }
    public void setTitle(String title) { this.title = title; }
    public void setBaseFee(double baseFee) { this.baseFee = baseFee; }
    public void setMaxAttendeeLimit(int maxAttendeeLimit) { this.maxAttendeeLimit = maxAttendeeLimit; }
    public void setStartTime(int startTime) { this.startTime = startTime; }
    public void setDurationTime(int durationTime) { this.durationTime = durationTime; }
    public void setRequirements(String requirements) { this.requirements = requirements; }

    // this should return a String, built similarly to how you previously did it in your printDetails method
    public String toString() {
        return ID + " - " + title;
    }

    // other methods related to modifying a single event go here
    // ...

}
在另一个名为EventHandler.java的类中:

import java.util.Scanner;

public class EventHandler {

    CalendarEvent[] myEvents;

    public void scheduleAEvent() {

        Scanner sc = new Scanner(System.in);

        System.out.println("\n~ SCHEDULE A EVENT ~");
        System.out.println("---------------------");

        CalendarEvent toAdd = new CalendarEvent();

        System.out.print("Enter the event ID: ");
        toAdd.setID(sc.nextLine());

        System.out.print("Enter the event title: ");
        toAdd.setTitle(sc.nextLine());

        System.out.print("Enter the fee: $");
        toAdd.setBaseFee(sc.nextDouble());

        System.out.print("Enter the maximum attendee limit: ");
        toAdd.setMaxAttendeeLimit(sc.nextInt());

        System.out.print("Enter the start time: ");
        toAdd.setStartTime(sc.nextInt());

        System.out.print("Enter the duration time in minutes: ");
        toAdd.setDurationTime(sc.nextInt());

        System.out.print("Enter requirements (optional): ");
        toAdd.setRequirements(sc.nextLine());
    }

    // Print event details
    public void printDetails() {
        System.out.println("\n~ EVENTS ~");
        System.out.println("-----------");

        String pattern = "%-25s %-50s %-25s %-43s %-34s %-34s %-1s\n";

        System.out.printf(pattern, "ID", "Title", "Fee", "Maximum Attendee Limit", "Start Time", "Duration Time", "Requirements");
        System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");

        // Display the records of events scheduled.
        for(int i = 0; i < myEvents.length; i++) {
            System.out.println(myEvents[i]);
        }
    }

}
import java.util.Scanner;
公共类事件处理程序{
日历事件[]我的事件;
public void scheduleAEvent(){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“\n~计划一个事件~”);
System.out.println(“--------------------------”;
CalendarEvent toAdd=新CalendarEvent();
System.out.print(“输入事件ID:”);
toAdd.setID(sc.nextLine());
System.out.print(“输入事件标题:”);
toAdd.setTitle(sc.nextLine());
System.out.print(“输入费用:$”;
增加挫折费(sc.nextDouble());
System.out.print(“输入最大与会者限制:”);
toAdd.setMaxAttendeeLimit(sc.nextInt());
系统输出打印(“输入开始时间:”);
toAdd.setStartTime(sc.nextInt());
System.out.print(“以分钟为单位输入持续时间:”);
toAdd.setDurationTime(sc.nextInt());
系统输出打印(“输入要求(可选):”;
添加设置要求(sc.nextLine());
}
//打印事件详细信息
公开资料{
System.out.println(“\n~EVENTS~”);
System.out.println(“--------------”;
字符串模式=“%-25s%-50s%-25s%-43s%-34s%-34s%-1s\n”;
System.out.printf(模式,“ID”、“标题”、“费用”、“最大与会者限制”、“开始时间”、“持续时间”、“要求”);
System.out.println(“--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------”;
//显示计划事件的记录。
for(int i=0;i

我建议您阅读一下面向对象设计,这是一种更有组织的数据结构方式。祝您好运,希望这会有所帮助。

错误是因为您的setter方法希望接收一个数组(在方法头中的类型后面用“[]”表示),但是您标记为错误的位置正试图只发送给定类型的一段数据。我认为最好是创建一个对象来表示事件,然后使用一个数组来存储这些对象。下面是一个快速的模型:

在名为CalendarEvent.java的文件中:

public class CalendarEvent {

    private String ID;
    private String title;
    private double baseFee;
    private int maxAttendeeLimit;
    private int startTime;
    private int durationTime;
    private String requirements;

    // Getters
    public String getID() { return this.ID; }
    public String getTitle() { return this.title; }
    public double getBaseFee() { return this.baseFee; }
    public int getMaxAttendeeLimit() { return this.maxAttendeeLimit; }
    public int getStartTime() { return this.startTime; }
    public int getDurationTime() { return this.durationTime; }
    public String getRequirements() { return this.requirements; }

    // Setters
    public void setID(String ID) { this.ID = ID; }
    public void setTitle(String title) { this.title = title; }
    public void setBaseFee(double baseFee) { this.baseFee = baseFee; }
    public void setMaxAttendeeLimit(int maxAttendeeLimit) { this.maxAttendeeLimit = maxAttendeeLimit; }
    public void setStartTime(int startTime) { this.startTime = startTime; }
    public void setDurationTime(int durationTime) { this.durationTime = durationTime; }
    public void setRequirements(String requirements) { this.requirements = requirements; }

    // this should return a String, built similarly to how you previously did it in your printDetails method
    public String toString() {
        return ID + " - " + title;
    }

    // other methods related to modifying a single event go here
    // ...

}
在另一个名为EventHandler.java的类中:

import java.util.Scanner;

public class EventHandler {

    CalendarEvent[] myEvents;

    public void scheduleAEvent() {

        Scanner sc = new Scanner(System.in);

        System.out.println("\n~ SCHEDULE A EVENT ~");
        System.out.println("---------------------");

        CalendarEvent toAdd = new CalendarEvent();

        System.out.print("Enter the event ID: ");
        toAdd.setID(sc.nextLine());

        System.out.print("Enter the event title: ");
        toAdd.setTitle(sc.nextLine());

        System.out.print("Enter the fee: $");
        toAdd.setBaseFee(sc.nextDouble());

        System.out.print("Enter the maximum attendee limit: ");
        toAdd.setMaxAttendeeLimit(sc.nextInt());

        System.out.print("Enter the start time: ");
        toAdd.setStartTime(sc.nextInt());

        System.out.print("Enter the duration time in minutes: ");
        toAdd.setDurationTime(sc.nextInt());

        System.out.print("Enter requirements (optional): ");
        toAdd.setRequirements(sc.nextLine());
    }

    // Print event details
    public void printDetails() {
        System.out.println("\n~ EVENTS ~");
        System.out.println("-----------");

        String pattern = "%-25s %-50s %-25s %-43s %-34s %-34s %-1s\n";

        System.out.printf(pattern, "ID", "Title", "Fee", "Maximum Attendee Limit", "Start Time", "Duration Time", "Requirements");
        System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");

        // Display the records of events scheduled.
        for(int i = 0; i < myEvents.length; i++) {
            System.out.println(myEvents[i]);
        }
    }

}
import java.util.Scanner;
公共类事件处理程序{
日历事件[]我的事件;
public void scheduleAEvent(){
扫描仪sc=新的扫描仪(System.in);
System.out.pr
private Reservation[] reservation = new Reservation[5];
private int reservationCounter;

public void printDetails() {
        System.out.println("\n~ RESERVATIONS ~");
        System.out.println("----------------");

        String pattern = "%-25s %-50s %-25s %-43s %-34s %-34s %-1s\n";

        System.out.printf(pattern, "ID", "Title", "Fee", "Maximum Attendee Limit", "Start Time", "Duration Time", "Requirements");
        System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");

        for(int i = 0; i < reservationCounter; i++)
            System.out.format(pattern, reservation[i].getID(), reservation[i].getTitle(), "$" + reservation[i].getBaseFee(), reservation[i].getMaxAttendeeLimit(), reservation[i].getStartTime(), reservation[i].getDurationTime(), reservation[i].getRequirements());
    }