这是一道家庭作业问题。我已经晚了 5 天,不知道自己做错了什么。这是我学习 Java 的第一个学期,也是我在这个网站上的第一篇文章
这是作业..
创建一个名为Calendar
的类。该类应包含一个名为 events
的变量,它是一个字符串数组。应创建该数组以容纳 5 个元素。使用常量值指定数组大小。不要对数组大小进行硬编码。在类构造函数中初始化数组,使每个元素包含字符串 “– No event planed – “。
该类应包含一个名为 CreateEvent
的方法。此方法应接受一个包含单字用户事件的字符串参数和一个表示星期几的整数参数。 星期一
应由数字1
表示,星期五
应由数字5
表示。使用传递到方法中的事件信息填充事件数组。尽管用户将输入单字事件,但每个事件字符串都应在每个事件前面添加以下字符串:
event_dayAppoinment: (where event_day is the day of the week)
例如,如果用户输入 1 和“doctor”,第一个数组元素应为: 周一预约:医生
如果用户输入 2 和“PTA”,第二个数组元素应为: 周二预约:PTA
编写一个驱动程序(在单独的类中)来创建并调用您的 Calendar 类。然后使用循环来收集用户输入。询问日期(作为整数),然后询问事件(作为单字字符串)。将整数和字符串传递给 Calendar 对象的 CreateEvent 方法。用户应该能够输入 0 – 5 个事件。如果用户输入 -1
,则循环应退出,并且您的应用程序应以表格格式打印出所有事件。您的程序不应允许用户输入星期几的无效值。除表示星期几的 1 – 5
或 -1
之外的任何输入都将被视为无效。
注释:
从用户处获取整数时,您需要在 Scanner 对象上使用 nextInt()
方法。从用户处获取字符串时,您需要在 Scanner 对象上使用 next()
方法。
这是到目前为止我的代码..
//DRIVER CLASS
/**
*
* @author Rocky
*/
//imports scanner
import java.util.Scanner;
//begin class driver
public class driver {
/**
* @paramargs the command line arguments
*/
//begin main method
public static void main(String[] args) {
//initiates scanner
Scanner userInput = new Scanner (System.in);
//declare variables
int dayOfWeek;
String userEvent;
//creates object for calender class
calendercalenderObject = new calender();
//user prompt
System.out.println("Enter day of week for your event in the following format:");
System.out.println("Enter 1 for Monday");
System.out.println("Enter 2 for Tuesday");
System.out.println("Enter 3 for Wednsday");
System.out.println("Enter 4 for Thursday");
System.out.println("Enter 5 for Friday");
System.out.println("Enter -1 to quit");
//collect user input
dayOfWeek = userInput.nextInt();
//user prompt
System.out.println("Please type in the name of your event");
//collect user input
userEvent = userInput.next();
//begin while loop
while (dayOfWeek != -1) {
//test for valid day of week
if ((dayOfWeek>=1) && (dayOfWeek<=5)){
//calls createEvent method in calender class and passes 2 variables
calenderObject.createEvent(userEvent,dayOfWeek);
} else {
//error message
System.out.println("You have entered an invalid number");
//user prompts
System.out.println("Press -1 to quit or enter another day");
System.out.println("Enter 1 for Monday");
System.out.println("Enter 2 for Tuesday");
System.out.println("Enter 3 for Wednsday");
System.out.println("Enter 4 for Thursday");
System.out.println("Enter 5 for Friday");
System.out.println("Enter -1 to quit");
//collect user input
dayOfWeek = userInput.nextInt();
//end data validity test
}
//end while loop
}
//prints array to screen
int i=0;
for (i=0;i<events.length;i++){
System.out.println(events[i]);
}
//end main method
}
}
/**
*
* @author Rocky
*/
//imports scanner
import java.util.Scanner;
//begin calender class
public class calender {
//creates events array
String[] events = new String[5];
//begin calender class constructor
public calender() {
//Initializes array
String[] events = {"-No event planned-","-No event planned-","-No event planned-","-No event planned-","-No event planned-"};
//end calender class constructor
}
//begin createEvent method
public String[] createEvent (String userEvent, int dayOfWeek){
//Start switch test
switch (dayOfWeek){
case 1:
events[0] = ("Monday Appoinment:") + userEvent;
break;
case 2:
events[1] = ("Tuesday Appoinment:") + userEvent;
break;
case 3:
events[2] = ("WednsdayAppoinment:") + userEvent;
break;
case 4:
events[3] = ("Thursday Appoinment:") + userEvent;
break;
case 5:
events[4] = ("Friday Appoinment:") + userEvent;
break;
default:
break;
//End switch test
}
//returns events array
return events;
//end create event method
}
//end calender class
}
最佳答案
您的 main 方法不知道 events
是什么,因为作用域中没有名为 events 的局部变量,并且主类上没有名为 events 的静态变量。您需要告诉它您正在寻找特定日历对象中的事件对象,如下所示:
System.out.println(calendarObject.events[0]);
这假设您的两个类位于同一个包中,或者两者都没有声明包(因此它们都位于默认包中)。如果这两个类位于不同的包中,则必须将实例成员公开为公共(public),或者创建一个公共(public)方法来访问它,以便另一个类可以看到它。
基于类的对象的想法是您可以使用一个类来创建多个对象。这在本次作业中可能不会很好地体现出来,因为您只创建了日历类的一个对象。为了引用对象的成员,您需要指定要在哪个对象中查找该成员。
关于java - 为什么我的主类看不到日历类中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12760751/