데이터 숙제 & 알고리즘 클래스는 System Task Workorder Program을 작성하라고 알려줍니다. 새로운 SystemTask 객체를 배열에 추가하고, 작업을 삭제하고, 정렬 된 객체 배열을 나열/인쇄하는 것과 같은 다양한 작업을 수행 할 것을 요청합니다.JAVA : Object Array는 마지막 요소 만 인쇄합니다.
나는 대부분의 코딩 작업을 이미 끝냈지 만, 나는 내 객체 배열을 인쇄 할 수 밖에 없다. 객체 배열에 마지막으로 추가 한 데이터가 무엇이든 내 배열의 모든 요소에 대한 데이터가됩니다.
일부 지침 :
- 내 WorkOrders는() 생성자는 배열의 4 기본 SystemTask 오브젝트를 배치해야합니다.
- listSystemTask() 메서드는 번호가 앞에있는 배열의 모든 SystemTask 객체를 순서대로 나열합니다.
참고 : 목록 또는 사전 java 방법을 사용하지 말아주십시오. 숙제에는 한계가 있습니다.
SystemTask 클래스
public class SystemTask{
private static String month, message;
private static int day, hour, minute;
//constructor methods
public SystemTask(){
month = "Jan";
day = 1;
hour = 00;
minute = 00;
message = "Task Here";
}
public SystemTask(String mon, int d, int h, int mnt, String msg){
month = mon;
day = d;
hour = h;
minute = mnt;
message = msg;
/*setMonth(mon);
setDay(d);
setHour(h);
setMinute(mnt);
setMessage(msg);*/
}
//get and set methods
public static String getMonth(){
return month;
}
public static int getDay(){
return day;
}
public static int getHour(){
return hour;
}
public static int getMinute(){
return minute;
}
public static String getMessage(){
return message;
}
public static void setMonth (String mon){
if(mon.length()!= 3)
System.out.println("Invalid 3 Letter Code. Try Again.");
else
month = mon;
}
public static void setDay(int d){
if(d<1 || d>31)
System.out.println("Invalid Day. Try Again.");
else
day = d;
}
public static void setHour(int h){
if(h<0 || h>23)
System.out.println("Invalid Hour. Try Again.");
else
hour = h;
}
public static void setMinute(int mnt){
if(mnt<0 || mnt>59)
System.out.println("Invalid Minute. Try Again.");
else
minute = mnt;
}
public static void setMessage(String msg){
if(msg.length()<1 || msg.length()>40)
System.out.println("Invalid Message. Try Again.");
else
message = msg;
}
@Override
public String toString(){
return getMonth()+" "+getDay()+", "+String.format("%02d",getHour())
+":"+String.format("%02d",getMinute())+" "+getMessage();
}
}
WorkOrder 클래스
public class WorkOrders {
private final SystemTask[] ary = new SystemTask[20]; //declare private 20 objects array
//public static int index, empty;
public static void main(String args[]){
WorkOrders object = new WorkOrders(); //create a WorkOrders object
object.run(); //call a run method
}
public WorkOrders(){
// for(int i = 0;i<ary.length;i++){
// ary[i] = new SystemTask();
// }
/*SystemTask t1 = new SystemTask("Mar", 4, 21, 30, "Backup Users");
ary[0] = t1;
SystemTask t2 = new SystemTask("Apr", 1, 17, 0, "Upgrade Hard Drives");
ary[1] = t2;
SystemTask t3 = new SystemTask("May", 6, 10, 45, "Virus Scan");
ary[2] = t3;
SystemTask t4 = new SystemTask("Jun", 3, 9, 15, "Database Backup");
ary[3] = t4;*/
ary[0] = new SystemTask("Mar", 4, 21, 30, "Backup Users");
ary[1] = new SystemTask("Apr", 1, 17, 0, "Upgrade Hard Drives");
ary[2] = new SystemTask("May", 6, 10, 45, "Virus Scan");
ary[3] = new SystemTask("Jun", 3, 9, 15, "Database Backup");
}
public void run(){
char choice;
do{
System.out.println("SYSTEM WORKORDER PROGRAM:");
System.out.println("A)dd SystemTask");
System.out.println("D)elete SystemTask");
System.out.println("L)ist SystemTask");
System.out.println("E)xit");
System.out.print("Select an option: ");
choice = UserInput.getChar();
switch (choice) {
case 'a':
case 'A':
//addSystemTask();
break;
case 'd':
case 'D':
//deleteSystemTask();
break;
case 'l':
case 'L':
listSystemTask();
break;
case 'e':
case 'E':
System.out.println("You quit the program.");
System.out.println("\nThanks for using System Workorder!");
System.exit(0);
break;
default:
System.out.println("\'" + choice + "\' does not exist. Try again.");
break;
}
System.out.println();
}while(choice !='E'|| choice !='e');
}
public void listSystemTask(){
System.out.println("\nALL LISTED TASKS");
for(int c=0;c<ary.length;c++){
if(ary[c]!=null)
System.out.println(c+1 + ": " + ary[c].toString());
}
}
내가 만든 또 다른 UserInput 사용자 클래스가있다. 키보드 입력 만하기 때문에 포함하지 않았습니다. 내 질문과 관련이없는 몇 가지 코드/메소드를 생략했다. 필자는 배열에있는 객체를 인쇄하는 것에 만 관심이 있습니다.
SYSTEM WORKORDER PROGRAM:
A)dd SystemTask
D)elete SystemTask
L)ist SystemTask
E)xit
Select an option: L
ALL LISTED TASKS
1: Jun 3, 09:15 Database Backup
2: Jun 3, 09:15 Database Backup
3: Jun 3, 09:15 Database Backup
4: Jun 3, 09:15 Database Backup
문제가 어디에서 오는 모르겠어요 :
여기서 문제는 이것이 내가 목록을 인쇄 할 때 출력 무엇을 얻을입니다. 나는 그것을 생성자의 배열을 초기화하는 것으로 의심하고 있지만 그것을 고칠 수없는 것 같습니다. 아니면 다른 장소에 있을까요?
의 사용 가능한 복제 [왜 ArrayList의 마지막 항목의 N 복사 목록에 추가 포함되어 있습니까?] (http://stackoverflow.com/questions/19843506/why-does-my-arraylist-contain- 마지막 항목에 마지막으로 추가 된 항목) –
그런데 개체를 배열에 정확하게 "추가"할 수는 없습니다. 배열의 크기는 고정되어 있습니다. 그래서, 당신은 오히려 배열에 "설정" –