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