From 4caa62c4d0000c504075a5a5078c6fc59b14ed74 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Wed, 25 Aug 2021 13:55:28 +0800 Subject: [PATCH 01/53] level-0 --- src/main/java/Duke.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334c..42aef1aea 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -6,5 +6,11 @@ public static void main(String[] args) { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); + System.out.println("__________________________________"); + System.out.println("Hello! I'm Duke"); + System.out.println("What can I do for you?"); + System.out.println("__________________________________"); + System.out.println("Bye, Hope to see you again soon!"); + System.out.println("__________________________________"); } } From 22361f2f58d203047e86f849c94eb7dcea9d0752 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Wed, 25 Aug 2021 15:02:20 +0800 Subject: [PATCH 02/53] Update Duke.java --- src/main/java/Duke.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334c..42aef1aea 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -6,5 +6,11 @@ public static void main(String[] args) { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); + System.out.println("__________________________________"); + System.out.println("Hello! I'm Duke"); + System.out.println("What can I do for you?"); + System.out.println("__________________________________"); + System.out.println("Bye, Hope to see you again soon!"); + System.out.println("__________________________________"); } } From 5a95fffe311d2f736c1d69535bc2ee0464f5a570 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Wed, 25 Aug 2021 16:07:29 +0800 Subject: [PATCH 03/53] Level-1 --- src/main/java/Task.java | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/main/java/Task.java diff --git a/src/main/java/Task.java b/src/main/java/Task.java new file mode 100644 index 000000000..4ec445449 --- /dev/null +++ b/src/main/java/Task.java @@ -0,0 +1,2 @@ +package PACKAGE_NAME;public class Task { +} From 9082346d02628d049b19febb77f203224d72cb2e Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Wed, 25 Aug 2021 16:07:42 +0800 Subject: [PATCH 04/53] Level-1 --- src/main/java/Duke.java | 29 +++++++++++++++++++++++++---- src/main/java/Task.java | 18 +++++++++++++++++- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 42aef1aea..bb9aeac94 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,4 +1,13 @@ +import java.util.Scanner; + public class Duke { + + + public static void bye() { + System.out.println("____________________________________________________________"); + System.out.println("Bye. Hope to see you again soon!"); + System.out.println("____________________________________________________________"); + } public static void main(String[] args) { String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" @@ -6,11 +15,23 @@ public static void main(String[] args) { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); - System.out.println("__________________________________"); + System.out.println("____________________________________________________________"); System.out.println("Hello! I'm Duke"); System.out.println("What can I do for you?"); - System.out.println("__________________________________"); - System.out.println("Bye, Hope to see you again soon!"); - System.out.println("__________________________________"); + System.out.println("____________________________________________________________"); + String command; + Scanner in = new Scanner(System.in); + + do{ + command = in.nextLine(); + + System.out.println("____________________________________________________________"); + System.out.println(command); + System.out.println("____________________________________________________________"); + + }while(!command.equals("bye")); + bye(); + + } } diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 4ec445449..24111dc21 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,2 +1,18 @@ -package PACKAGE_NAME;public class Task { +public class Task { + protected String content; + protected boolean Done; + + public Task(String content) { + this.content = content; + this.Done = false; + } + + public void complete(){ + this.Done = true; + } + + public String getInformation() { + return (Done ? "X" : " "); + } + } From f9d3e52eb28759c8e84e0e096c3ada993f6a19c0 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Wed, 25 Aug 2021 16:13:43 +0800 Subject: [PATCH 05/53] Level-2 --- src/main/java/Duke.java | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index bb9aeac94..79c3afef9 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,7 +2,18 @@ public class Duke { + private static Task[] tasks = new Task[110]; + private static int taskSum = 0; + public static void printList() { + Task now; + System.out.println("____________________________________________________________"); + for(int i=0; i Date: Wed, 25 Aug 2021 16:14:53 +0800 Subject: [PATCH 06/53] Level-3 --- src/main/java/Duke.java | 21 ++++++++++++++++----- src/main/java/Task.java | 1 - 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 79c3afef9..6f0a21c74 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -10,7 +10,7 @@ public static void printList() { System.out.println("____________________________________________________________"); for(int i=0; i Date: Tue, 31 Aug 2021 16:13:14 +0800 Subject: [PATCH 07/53] Level-4 --- src/main/java/Deadline.java | 13 +++++++++ src/main/java/Duke.java | 57 +++++++++++++++++++++++++------------ src/main/java/Event.java | 12 ++++++++ src/main/java/Task.java | 4 +++ src/main/java/Todo.java | 11 +++++++ 5 files changed, 79 insertions(+), 18 deletions(-) create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/Event.java create mode 100644 src/main/java/Todo.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 000000000..6e92c7c91 --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,13 @@ +public class Deadline extends Task{ + protected String by; + + public Deadline(String content, String by) { + super(content); + this.by = by; + } + + @Override + public String toString() { + return "[D]" + super.toString() + "(by: " + by + ")"; + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 6f0a21c74..b98c24a20 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,24 +2,24 @@ public class Duke { + public static final String Line = " ____________________________________________________________"; private static Task[] tasks = new Task[110]; private static int taskSum = 0; public static void printList() { Task now; - System.out.println("____________________________________________________________"); + System.out.println(Line); + System.out.println(" Here are the tasks in your list:"); for(int i=0; i Date: Tue, 31 Aug 2021 16:23:23 +0800 Subject: [PATCH 08/53] Level-4 --- src/main/java/Duke.java | 2 +- text-ui-test/runtest.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index b98c24a20..ab6cd95ca 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -41,7 +41,7 @@ public static void main(String[] args) { String[] number = command.split(" "); int taskIndex = Integer.parseInt(number[1]) - 1; tasks[taskIndex].complete(); - System.out.println(Line + "\n" + " Nice! I've marked this task as done:" + "\n [" + tasks[taskIndex].getInformation() + "]" + tasks[taskIndex].content + "\n" + Line); + System.out.println(Line + "\n" + " Nice! I've marked this task as done:" + "\n " + tasks[taskIndex].toString() + "\n" + Line); } else if(command.contains("todo")){ int first = command.indexOf(" "); diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 087374464..b730857de 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -7,7 +7,7 @@ REM delete output from previous run if exist ACTUAL.TXT del ACTUAL.TXT REM compile the code into the bin folder -javac -cp ..\src\main\java -Xlint:none -d ..\bin ..\src\main\java\*.java +javac -cp ..\src\main\java\Duke -Xlint:none -d ..\bin ..\src\main\java\*.java IF ERRORLEVEL 1 ( echo ********** BUILD FAILURE ********** exit /b 1 From 24b02c7f38b49768c622c62ee74d615d1853f879 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Tue, 31 Aug 2021 16:34:04 +0800 Subject: [PATCH 09/53] Level-4 --- src/main/java/Duke.java | 8 +++--- text-ui-test/EXPECTED.TXT | 60 +++++++++++++++++++++++++++++++++++++-- text-ui-test/input.txt | 9 ++++++ text-ui-test/runtest.bat | 2 +- 4 files changed, 72 insertions(+), 7 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index ab6cd95ca..73bcaa740 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -26,10 +26,10 @@ public static void greeting() { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); - System.out.println("____________________________________________________________"); - System.out.println("Hello! I'm Duke"); - System.out.println("What can I do for you?"); - System.out.println("____________________________________________________________"); + System.out.println(Line); + System.out.println(" Hello! I'm Duke"); + System.out.println(" What can I do for you?"); + System.out.println(Line); } public static void main(String[] args) { greeting(); diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 657e74f6e..d5023fc69 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,7 +1,63 @@ Hello from - ____ _ -| _ \ _ _| | _____ + ____ _ +| _ \ _ _| | _____ | | | | | | | |/ / _ \ | |_| | |_| | < __/ |____/ \__,_|_|\_\___| + ____________________________________________________________ + Hello! I'm Duke + What can I do for you? + ____________________________________________________________ +todo task1 + ____________________________________________________________ + Got it. I've added this task: + [T][ ] task1 + Now you have 1 tasks in the list + ____________________________________________________________ +todo taks2 + ____________________________________________________________ + Got it. I've added this task: + [T][ ] taks2 + Now you have 2 tasks in the list + ____________________________________________________________ + + ____________________________________________________________ + Here are the tasks in your list: + 1.[T][ ] task1 + 2.[T][ ] taks2 + ____________________________________________________________ + + ____________________________________________________________ + Nice! I've marked this task as done: + [T][X] task1 + ____________________________________________________________ + + ____________________________________________________________ + Got it. I've added this task: + [D][ ] task3 (y Sunday) + Now you have 3 tasks in the list + ____________________________________________________________ + + ____________________________________________________________ + Got it. I've added this task: + [E][ ] task4 (t 2-3pm) + Now you have 4 tasks in the list + ____________________________________________________________ + + ____________________________________________________________ + Nice! I've marked this task as done: + [E][X] task4 (at: t 2-3pm) + ____________________________________________________________ + + ____________________________________________________________ + Here are the tasks in your list: + 1.[T][X] task1 + 2.[T][ ] taks2 + 3.[D][ ] task3 (by: y Sunday) + 4.[E][X] task4 (at: t 2-3pm) + ____________________________________________________________ + + ____________________________________________________________ + Bye. Hope to see you again soon! + ____________________________________________________________ \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb..50c7bcbe0 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1,9 @@ +todo task1 +todo task2 +list +done 1 +deadline task3 /by Sunday +event task4 /at 2-3pm +done 4 +list +bye \ No newline at end of file diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index b730857de..087374464 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -7,7 +7,7 @@ REM delete output from previous run if exist ACTUAL.TXT del ACTUAL.TXT REM compile the code into the bin folder -javac -cp ..\src\main\java\Duke -Xlint:none -d ..\bin ..\src\main\java\*.java +javac -cp ..\src\main\java -Xlint:none -d ..\bin ..\src\main\java\*.java IF ERRORLEVEL 1 ( echo ********** BUILD FAILURE ********** exit /b 1 From e497d25ac3c0a954cb553fea206533ffd0bc80b2 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Wed, 1 Sep 2021 14:13:44 +0800 Subject: [PATCH 10/53] Level-4 final with ui --- src/main/java/Deadline.java | 2 +- src/main/java/Duke.java | 4 ++-- src/main/java/Event.java | 2 +- text-ui-test/EXPECTED.TXT | 28 ++++++++++------------------ 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 6e92c7c91..baec292b2 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -8,6 +8,6 @@ public Deadline(String content, String by) { @Override public String toString() { - return "[D]" + super.toString() + "(by: " + by + ")"; + return "[D]" + super.toString() + "(" + by + ")"; } } diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 73bcaa740..824163fe4 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -55,7 +55,7 @@ else if(command.contains("deadline")){ int first = command.indexOf(" "); int itemEnd = command.indexOf("/"); String item = command.substring(first,itemEnd); - String by = command.substring(itemEnd + 2,command.length()); + String by = command.substring(itemEnd + 1,command.length()); tasks[taskSum] = new Deadline(item,by); taskSum = taskSum + 1; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [D][ ] " + item + " (" + by + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); @@ -65,7 +65,7 @@ else if(command.contains("event")){ int first = command.indexOf(" "); int itemEnd = command.indexOf("/"); String item = command.substring(first,itemEnd); - String at = command.substring(itemEnd + 2,command.length()); + String at = command.substring(itemEnd + 1,command.length()); tasks[taskSum] = new Event(item,at); taskSum = taskSum + 1; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [E][ ] " + item + " (" + at + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); diff --git a/src/main/java/Event.java b/src/main/java/Event.java index b656dd2a9..b4f5a8470 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -7,6 +7,6 @@ public Event(String content, String at) { } @Override public String toString() { - return "[E]" + super.toString() + "(at: " + at + ")"; + return "[E]" + super.toString() + "(" + at + ")"; } } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index d5023fc69..5663573b2 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -9,55 +9,47 @@ Hello from Hello! I'm Duke What can I do for you? ____________________________________________________________ -todo task1 ____________________________________________________________ Got it. I've added this task: [T][ ] task1 Now you have 1 tasks in the list ____________________________________________________________ -todo taks2 ____________________________________________________________ Got it. I've added this task: - [T][ ] taks2 + [T][ ] task2 Now you have 2 tasks in the list ____________________________________________________________ - ____________________________________________________________ Here are the tasks in your list: 1.[T][ ] task1 - 2.[T][ ] taks2 + 2.[T][ ] task2 ____________________________________________________________ - ____________________________________________________________ Nice! I've marked this task as done: [T][X] task1 ____________________________________________________________ - ____________________________________________________________ Got it. I've added this task: - [D][ ] task3 (y Sunday) + [D][ ] task3 (by Sunday) Now you have 3 tasks in the list ____________________________________________________________ - ____________________________________________________________ Got it. I've added this task: - [E][ ] task4 (t 2-3pm) + [E][ ] task4 (at 2-3pm) Now you have 4 tasks in the list ____________________________________________________________ - ____________________________________________________________ Nice! I've marked this task as done: - [E][X] task4 (at: t 2-3pm) + [E][X] task4 (at 2-3pm) ____________________________________________________________ - ____________________________________________________________ Here are the tasks in your list: 1.[T][X] task1 - 2.[T][ ] taks2 - 3.[D][ ] task3 (by: y Sunday) - 4.[E][X] task4 (at: t 2-3pm) + 2.[T][ ] task2 + 3.[D][ ] task3 (by Sunday) + 4.[E][X] task4 (at 2-3pm) ____________________________________________________________ - ____________________________________________________________ Bye. Hope to see you again soon! - ____________________________________________________________ \ No newline at end of file + ____________________________________________________________ + From 2222f066b5fe6abb7066808dc822be289e4d9730 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 5 Sep 2021 16:35:10 +0800 Subject: [PATCH 11/53] level-4 after peer review --- src/main/java/Duke.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 824163fe4..0488679d0 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -47,7 +47,7 @@ else if(command.contains("todo")){ int first = command.indexOf(" "); String item = command.substring(first,command.length()); tasks[taskSum] = new Todo(item); - taskSum = taskSum + 1; + taskSum = taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [T][ ] " + item + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); } @@ -57,7 +57,7 @@ else if(command.contains("deadline")){ String item = command.substring(first,itemEnd); String by = command.substring(itemEnd + 1,command.length()); tasks[taskSum] = new Deadline(item,by); - taskSum = taskSum + 1; + taskSum = taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [D][ ] " + item + " (" + by + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); } @@ -67,7 +67,7 @@ else if(command.contains("event")){ String item = command.substring(first,itemEnd); String at = command.substring(itemEnd + 1,command.length()); tasks[taskSum] = new Event(item,at); - taskSum = taskSum + 1; + taskSum = taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [E][ ] " + item + " (" + at + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); } From 633befafbabbd0a3d34c3d2caeb10e5f5b9d5333 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 5 Sep 2021 18:43:18 +0800 Subject: [PATCH 12/53] Level-5 --- src/main/java/Duke.java | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0488679d0..0fcfad3fd 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -45,6 +45,13 @@ public static void main(String[] args) { } else if(command.contains("todo")){ int first = command.indexOf(" "); + int check = command.indexOf("d"); + if(check == command.length()-2){ + System.out.println(Line); + System.out.println(" ☹ OOPS!!! The description of a todo cannot be empty."); + System.out.println(Line); + continue; + } String item = command.substring(first,command.length()); tasks[taskSum] = new Todo(item); taskSum = taskSum++; @@ -53,6 +60,13 @@ else if(command.contains("todo")){ } else if(command.contains("deadline")){ int first = command.indexOf(" "); + int check = command.indexOf("n"); + if(check == command.length()-2){ + System.out.println(Line); + System.out.println(" ☹ OOPS!!! The description of a deadline cannot be empty."); + System.out.println(Line); + continue; + } int itemEnd = command.indexOf("/"); String item = command.substring(first,itemEnd); String by = command.substring(itemEnd + 1,command.length()); @@ -63,6 +77,13 @@ else if(command.contains("deadline")){ } else if(command.contains("event")){ int first = command.indexOf(" "); + int check = command.indexOf("t"); + if(check == command.length()-1){ + System.out.println(Line); + System.out.println(" ☹ OOPS!!! The description of a event cannot be empty."); + System.out.println(Line); + continue; + } int itemEnd = command.indexOf("/"); String item = command.substring(first,itemEnd); String at = command.substring(itemEnd + 1,command.length()); @@ -79,7 +100,9 @@ else if(command.contains("event")){ case "bye": break; default: - + System.out.println(Line); + System.out.println(" ☹ OOPS!!! I'm sorry, but I don't know what that means :-("); + System.out.println(Line); } } }while(!command.equals("bye")); From e7c8ad4f41121c3cd8b1904cf76f253b16cee577 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 5 Sep 2021 18:52:13 +0800 Subject: [PATCH 13/53] exception --- src/main/java/DukeException.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/java/DukeException.java diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java new file mode 100644 index 000000000..685dd7714 --- /dev/null +++ b/src/main/java/DukeException.java @@ -0,0 +1,10 @@ +public class DukeException extends Exception{ + public DukeException(String s) { + super(s); + } + + @Override + public String toString() { + return super.getMessage(); + } +} From c2637d1c1453e00fa8c9832f708309c3257e7d4b Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 5 Sep 2021 18:56:58 +0800 Subject: [PATCH 14/53] package --- src/main/java/{ => Duke}/Deadline.java | 4 +++- src/main/java/{ => Duke}/Duke.java | 7 ++++--- src/main/java/{ => Duke}/DukeException.java | 2 ++ src/main/java/{ => Duke}/Event.java | 4 +++- src/main/java/{ => Duke}/Task.java | 2 ++ src/main/java/{ => Duke}/Todo.java | 6 +++++- 6 files changed, 19 insertions(+), 6 deletions(-) rename src/main/java/{ => Duke}/Deadline.java (82%) rename src/main/java/{ => Duke}/Duke.java (97%) rename src/main/java/{ => Duke}/DukeException.java (92%) rename src/main/java/{ => Duke}/Event.java (82%) rename src/main/java/{ => Duke}/Task.java (96%) rename src/main/java/{ => Duke}/Todo.java (70%) diff --git a/src/main/java/Deadline.java b/src/main/java/Duke/Deadline.java similarity index 82% rename from src/main/java/Deadline.java rename to src/main/java/Duke/Deadline.java index baec292b2..531663ca2 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Duke/Deadline.java @@ -1,4 +1,6 @@ -public class Deadline extends Task{ +package Duke; + +public class Deadline extends Task { protected String by; public Deadline(String content, String by) { diff --git a/src/main/java/Duke.java b/src/main/java/Duke/Duke.java similarity index 97% rename from src/main/java/Duke.java rename to src/main/java/Duke/Duke.java index 0fcfad3fd..a587d4213 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -1,3 +1,4 @@ +package Duke; import java.util.Scanner; public class Duke { @@ -54,7 +55,7 @@ else if(command.contains("todo")){ } String item = command.substring(first,command.length()); tasks[taskSum] = new Todo(item); - taskSum = taskSum++; + taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [T][ ] " + item + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); } @@ -71,7 +72,7 @@ else if(command.contains("deadline")){ String item = command.substring(first,itemEnd); String by = command.substring(itemEnd + 1,command.length()); tasks[taskSum] = new Deadline(item,by); - taskSum = taskSum++; + taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [D][ ] " + item + " (" + by + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); } @@ -88,7 +89,7 @@ else if(command.contains("event")){ String item = command.substring(first,itemEnd); String at = command.substring(itemEnd + 1,command.length()); tasks[taskSum] = new Event(item,at); - taskSum = taskSum++; + taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [E][ ] " + item + " (" + at + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); } diff --git a/src/main/java/DukeException.java b/src/main/java/Duke/DukeException.java similarity index 92% rename from src/main/java/DukeException.java rename to src/main/java/Duke/DukeException.java index 685dd7714..a28ebaa12 100644 --- a/src/main/java/DukeException.java +++ b/src/main/java/Duke/DukeException.java @@ -1,3 +1,5 @@ +package Duke; + public class DukeException extends Exception{ public DukeException(String s) { super(s); diff --git a/src/main/java/Event.java b/src/main/java/Duke/Event.java similarity index 82% rename from src/main/java/Event.java rename to src/main/java/Duke/Event.java index b4f5a8470..318ce49cb 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Duke/Event.java @@ -1,4 +1,6 @@ -public class Event extends Task{ +package Duke; + +public class Event extends Task { protected String at; public Event(String content, String at) { diff --git a/src/main/java/Task.java b/src/main/java/Duke/Task.java similarity index 96% rename from src/main/java/Task.java rename to src/main/java/Duke/Task.java index 6c649d570..d5a6fc6dd 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Duke/Task.java @@ -1,3 +1,5 @@ +package Duke; + public class Task { protected String content; protected boolean Done; diff --git a/src/main/java/Todo.java b/src/main/java/Duke/Todo.java similarity index 70% rename from src/main/java/Todo.java rename to src/main/java/Duke/Todo.java index 929c3bac1..5692268a9 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Duke/Todo.java @@ -1,4 +1,8 @@ -public class Todo extends Task{ +package Duke; + +import Duke.Task; + +public class Todo extends Task { public Todo(String content) { super(content); From 7caaf878240c16775f12e9540c5ff86dbd186693 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Mon, 6 Sep 2021 10:58:13 +0800 Subject: [PATCH 15/53] commit --- src/main/java/Duke/Duke.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index a587d4213..0a61e9cda 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -2,11 +2,9 @@ import java.util.Scanner; public class Duke { - public static final String Line = " ____________________________________________________________"; private static Task[] tasks = new Task[110]; private static int taskSum = 0; - public static void printList() { Task now; System.out.println(Line); From 50527220c30192a65a005e23811c8c9393f006b5 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Mon, 6 Sep 2021 11:22:55 +0800 Subject: [PATCH 16/53] for branch level 5 --- src/main/java/Duke/Duke.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 0a61e9cda..466b577e7 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -30,6 +30,7 @@ public static void greeting() { System.out.println(" What can I do for you?"); System.out.println(Line); } + public static void main(String[] args) { greeting(); String command; From fe3aae25ea2c35ec8306ba50e962f70e0d031c95 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Mon, 6 Sep 2021 11:23:42 +0800 Subject: [PATCH 17/53] for master --- src/main/java/Duke/Duke.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 466b577e7..95369a4bf 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -15,9 +15,11 @@ public static void printList() { } System.out.println(Line); } + public static void bye() { System.out.println(Line + "\n" + " Bye. Hope to see you again soon!" + "\n" + Line); } + public static void greeting() { String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" @@ -30,7 +32,7 @@ public static void greeting() { System.out.println(" What can I do for you?"); System.out.println(Line); } - + public static void main(String[] args) { greeting(); String command; From 78c0a1993d3dff7b57b848ea2f680b0c1df8ed07 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Mon, 6 Sep 2021 11:24:19 +0800 Subject: [PATCH 18/53] for master --- src/main/java/Duke/Duke.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 0a61e9cda..bdc7dd17b 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -15,9 +15,11 @@ public static void printList() { } System.out.println(Line); } + public static void bye() { System.out.println(Line + "\n" + " Bye. Hope to see you again soon!" + "\n" + Line); } + public static void greeting() { String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" From 8f91ee955af2485aea322e164dba4cecfee8cf02 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Mon, 6 Sep 2021 11:26:01 +0800 Subject: [PATCH 19/53] practice --- src/main/java/Duke/Duke.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 95369a4bf..b63dabf07 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -15,6 +15,8 @@ public static void printList() { } System.out.println(Line); } + + public static void bye() { System.out.println(Line + "\n" + " Bye. Hope to see you again soon!" + "\n" + Line); From 2a818e7727468b501b045015cc44cd95d77c8f37 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 12 Sep 2021 17:04:13 +0800 Subject: [PATCH 20/53] level-6 --- src/main/java/Duke/Duke.java | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 988e6096a..2e6a888d5 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -1,16 +1,16 @@ package Duke; import java.util.Scanner; - +import java.util.ArrayList; public class Duke { public static final String Line = " ____________________________________________________________"; - private static Task[] tasks = new Task[110]; + private static ArrayList tasks = new ArrayList<>(); private static int taskSum = 0; public static void printList() { Task now; System.out.println(Line); System.out.println(" Here are the tasks in your list:"); for(int i=0; i Date: Sun, 12 Sep 2021 17:07:58 +0800 Subject: [PATCH 21/53] for master --- src/main/java/Duke/Duke.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 2e6a888d5..6555cc3cf 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -69,6 +69,7 @@ else if(command.contains("todo")){ taskSum++; System.out.println(Line + "\n" + " Got it. I've added this task: " + "\n" + " [T][ ] " + item + "\n" + " Now you have " + taskSum + " tasks in the list"); System.out.println(Line); + } else if(command.contains("deadline")){ int first = command.indexOf(" "); From dc40ec5998d84097e935b01ab36989ea000f8d25 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 12 Sep 2021 17:43:04 +0800 Subject: [PATCH 22/53] level-7 --- data/lines.txt | 2 ++ src/main/java/Duke/Duke.java | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 data/lines.txt diff --git a/data/lines.txt b/data/lines.txt new file mode 100644 index 000000000..7bd22b609 --- /dev/null +++ b/data/lines.txt @@ -0,0 +1,2 @@ +1 [T][ ] task1 +2 [T][ ] task2 diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 6555cc3cf..3a3bad90f 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -1,6 +1,11 @@ package Duke; import java.util.Scanner; import java.util.ArrayList; +import java.io.File; +import java.io.FileWriter; +import java.io.FileNotFoundException; +import java.io.IOException; + public class Duke { public static final String Line = " ____________________________________________________________"; private static ArrayList tasks = new ArrayList<>(); @@ -33,12 +38,29 @@ public static void greeting() { System.out.println(Line); } + private static void writeToFile(String filePath) throws IOException { + FileWriter fw = new FileWriter(filePath); + for(int i=0; i Date: Sun, 26 Sep 2021 18:24:33 +0800 Subject: [PATCH 23/53] level-9 --- data/lines.txt | 2 +- src/main/java/Duke/Command.java | 85 +++++++++++++ src/main/java/Duke/Duke.java | 138 +++------------------ src/main/java/Duke/Parser.java | 48 +++++++ src/main/java/Duke/Ui.java | 23 ++++ src/main/java/META-INF/MANIFEST.MF | 3 + src/main/java/{Duke => Task}/Deadline.java | 4 +- src/main/java/{Duke => Task}/Event.java | 4 +- src/main/java/{Duke => Task}/Task.java | 2 +- src/main/java/{Duke => Task}/Todo.java | 4 +- 10 files changed, 187 insertions(+), 126 deletions(-) create mode 100644 src/main/java/Duke/Command.java create mode 100644 src/main/java/Duke/Parser.java create mode 100644 src/main/java/Duke/Ui.java create mode 100644 src/main/java/META-INF/MANIFEST.MF rename src/main/java/{Duke => Task}/Deadline.java (89%) rename src/main/java/{Duke => Task}/Event.java (89%) rename src/main/java/{Duke => Task}/Task.java (96%) rename src/main/java/{Duke => Task}/Todo.java (85%) diff --git a/data/lines.txt b/data/lines.txt index 7bd22b609..4e52019f6 100644 --- a/data/lines.txt +++ b/data/lines.txt @@ -1,2 +1,2 @@ -1 [T][ ] task1 +1 [T][X] task1 2 [T][ ] task2 diff --git a/src/main/java/Duke/Command.java b/src/main/java/Duke/Command.java new file mode 100644 index 000000000..4ed030fc2 --- /dev/null +++ b/src/main/java/Duke/Command.java @@ -0,0 +1,85 @@ +package Duke; + +import Task.Task; +import Task.Todo; +import Task.Deadline; +import Task.Event; +import java.util.ArrayList; + +public class Command { + + private static ArrayList tasks = new ArrayList<>(); + private static int taskSum = 0; + + public static void printList() { + Task now; + System.out.println(" Here are the tasks in your list:"); + for(int i=0; i tasks = new ArrayList<>(); - private static int taskSum = 0; - public static void printList() { - Task now; - System.out.println(Line); - System.out.println(" Here are the tasks in your list:"); - for(int i=0; i Date: Sun, 26 Sep 2021 22:43:51 +0800 Subject: [PATCH 24/53] Level-9 final --- data/lines.txt | 2 +- src/main/java/Duke/Command.java | 14 ++++- src/main/java/Duke/Duke.java | 32 +----------- src/main/java/Duke/Parser.java | 89 +++++++++++++++++--------------- src/main/java/Task/Deadline.java | 2 - src/main/java/Task/Event.java | 5 +- src/main/java/Task/Task.java | 2 + src/main/java/Task/Todo.java | 2 - 8 files changed, 66 insertions(+), 82 deletions(-) diff --git a/data/lines.txt b/data/lines.txt index 4e52019f6..7bd22b609 100644 --- a/data/lines.txt +++ b/data/lines.txt @@ -1,2 +1,2 @@ -1 [T][X] task1 +1 [T][ ] task1 2 [T][ ] task2 diff --git a/src/main/java/Duke/Command.java b/src/main/java/Duke/Command.java index 4ed030fc2..9088f6477 100644 --- a/src/main/java/Duke/Command.java +++ b/src/main/java/Duke/Command.java @@ -5,6 +5,8 @@ import Task.Deadline; import Task.Event; import java.util.ArrayList; +import java.io.FileWriter; +import java.io.IOException; public class Command { @@ -82,4 +84,14 @@ public static void find(String command){ public static void printerror(){ System.out.println(" ☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } -} + public static void writeToFile(String filePath) throws IOException { + FileWriter fw = new FileWriter(filePath); + for(int i=0; i Date: Sun, 26 Sep 2021 23:28:45 +0800 Subject: [PATCH 25/53] JavaDoc --- src/main/java/Duke/Command.java | 48 +++++++++++++++++++++++++++++++- src/main/java/Duke/Duke.java | 4 +-- src/main/java/Task/Deadline.java | 10 +++++++ src/main/java/Task/Event.java | 12 ++++++++ src/main/java/Task/Task.java | 18 ++++++++++-- src/main/java/Task/Todo.java | 8 ++++++ 6 files changed, 94 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke/Command.java b/src/main/java/Duke/Command.java index 9088f6477..18ecc252f 100644 --- a/src/main/java/Duke/Command.java +++ b/src/main/java/Duke/Command.java @@ -9,10 +9,14 @@ import java.io.IOException; public class Command { - + /** The data structure to store all task information**/ private static ArrayList tasks = new ArrayList<>(); + /** The integer to store the sum of tasks**/ private static int taskSum = 0; + /** + * The methods to print all tasks. + */ public static void printList() { Task now; System.out.println(" Here are the tasks in your list:"); @@ -22,16 +26,28 @@ public static void printList() { } } + /** + * The methods to close the system. + */ public static void bye() { System.out.println(" Bye. Hope to see you again soon!" ); } + /** + * The methods to mark the task as done. + * @param command A String to store the information of done command. + */ public static void done(String command){ String[] number = command.split(" "); int taskIndex = Integer.parseInt(number[1]) - 1; tasks.get(taskIndex).complete(); System.out.println(" Nice! I've marked this task as done:" + "\n " + tasks.get(taskIndex).toString()); } + + /** + * The methods to delete a task from the list. + * @param command A String to store the information of delete command. + */ public static void delete(String command){ String[] number = command.split(" "); int taskIndex = Integer.parseInt(number[1]) - 1; @@ -40,6 +56,11 @@ public static void delete(String command){ System.out.println(" Noted. I've removed this task: " + "\n " + tasks.get(taskIndex).toString() + "\n" + " Now you have " + taskSum + " tasks in the list"); tasks.remove(taskIndex); } + + /** + * The methods to add a todo tyoe into the list. + * @param command A String to store the information of todo command. + */ public static void todo(String command){ int first = command.indexOf(" "); String item = command.substring(first,command.length()); @@ -48,6 +69,11 @@ public static void todo(String command){ taskSum++; System.out.println(" Got it. I've added this task: " + "\n" + " [T][ ] " + item + "\n" + " Now you have " + taskSum + " tasks in the list"); } + + /** + * The methods to add a deadline tyoe into the list. + * @param command A String to store the information of deadline command. + */ public static void deadline(String command){ int first = command.indexOf(" "); int itemEnd = command.indexOf("/"); @@ -59,6 +85,11 @@ public static void deadline(String command){ System.out.println( " Got it. I've added this task: " + "\n" + " [D][ ] " + item + " (" + by + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); } + + /** + * A String to store the information of event command. + * @param command A String to store the information of event command. + */ public static void event(String command){ int first = command.indexOf(" "); int itemEnd = command.indexOf("/"); @@ -69,6 +100,11 @@ public static void event(String command){ taskSum++; System.out.println(" Got it. I've added this task: " + "\n" + " [E][ ] " + item + " (" + at + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); } + + /** + * The methods to find a task by searching for a keyword. + * @param command A String to store the information of event command. + */ public static void find(String command){ System.out.println(" Here are the matching tasks in your list:"); int first = command.indexOf(" "); @@ -81,9 +117,19 @@ public static void find(String command){ } } } + + /** + * The methods means that Duke cannot understand the command. + */ public static void printerror(){ System.out.println(" ☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } + + /** + * The methods to write the output into the file. + * @param filePath A string store the path of the output file. + * @throws IOException Exception strows when cannot find the path of the file. + */ public static void writeToFile(String filePath) throws IOException { FileWriter fw = new FileWriter(filePath); for(int i=0; i Date: Sun, 26 Sep 2021 23:36:06 +0800 Subject: [PATCH 26/53] Update README.md --- docs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/README.md b/docs/README.md index 8077118eb..b8763974b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,7 @@ # User Guide +**Duke** is a checklist app for recording tasks, via a Command Line Interfaces. + ## Features ### Feature-ABC From 09b6898c52673691838eddfba2ae845cc8ff0fc6 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Sun, 26 Sep 2021 23:40:52 +0800 Subject: [PATCH 27/53] Update README.md --- docs/README.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index b8763974b..902e3f1bb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,9 +4,28 @@ ## Features -### Feature-ABC +### Feature -Description of the feature. +## Add a new task +# Format +``` +todo TODO_NAME +``` +``` +event EVENT_NAME /at DATE +``` +``` +todo TODO_NAME /by DATE +## Add a new task +# Format +``` +todo TODO_NAME +``` +``` +event EVENT_NAME /at DATE +``` +``` +todo TODO_NAME /by DATE ### Feature-XYZ From bf3ba61ab04b0d6e385a62b3d18e456140ca99b9 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Sun, 26 Sep 2021 23:41:17 +0800 Subject: [PATCH 28/53] Update README.md --- docs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/README.md b/docs/README.md index 902e3f1bb..2691319ab 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,6 +16,8 @@ event EVENT_NAME /at DATE ``` ``` todo TODO_NAME /by DATE + +``` ## Add a new task # Format ``` From eb1a1b41c58843e5ec8e02b3fb5b0230d255db28 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Sun, 26 Sep 2021 23:46:41 +0800 Subject: [PATCH 29/53] Update README.md --- docs/README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/README.md b/docs/README.md index 2691319ab..bb96f0b65 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,6 +7,7 @@ ### Feature ## Add a new task +# This function will add three types of task, including todo, event and deadline into the list. # Format ``` todo TODO_NAME @@ -16,37 +17,36 @@ event EVENT_NAME /at DATE ``` ``` todo TODO_NAME /by DATE - ``` -## Add a new task + +## Delete a task +# This function will delete an existing task from the list. # Format ``` -todo TODO_NAME +delete TASK_INDEX ``` + +## List tasks +# This function will show all tasks in the list. +# Format ``` -event EVENT_NAME /at DATE +list ``` +## Done +# This function will make the task as done in the list. +# Format +``` +done TASK_INDEX ``` -todo TODO_NAME /by DATE - -### Feature-XYZ - -Description of the feature. - -## Usage - -### `Keyword` - Describe action - -Describe the action and its outcome. - -Example of usage: - -`keyword (optional arguments)` - -Expected outcome: - -Description of the outcome. +## Find +# This function will find a task from the list according to the key word. +``` +find KEY_WORD +``` +## Bye +# This function will exit the app. +# Format ``` -expected output +bye ``` From 912736ebe14477d3b6ddfb6632cca67051236b68 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Sun, 26 Sep 2021 23:47:21 +0800 Subject: [PATCH 30/53] Update README.md --- docs/README.md | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/docs/README.md b/docs/README.md index bb96f0b65..4db6dd02e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,11 +4,9 @@ ## Features -### Feature - ## Add a new task -# This function will add three types of task, including todo, event and deadline into the list. -# Format +### This function will add three types of task, including todo, event and deadline into the list. +### Format ``` todo TODO_NAME ``` @@ -20,33 +18,33 @@ todo TODO_NAME /by DATE ``` ## Delete a task -# This function will delete an existing task from the list. -# Format +### This function will delete an existing task from the list. +### Format ``` delete TASK_INDEX ``` ## List tasks -# This function will show all tasks in the list. -# Format +### This function will show all tasks in the list. +### Format ``` list ``` ## Done -# This function will make the task as done in the list. -# Format +### This function will make the task as done in the list. +### Format ``` done TASK_INDEX ``` ## Find -# This function will find a task from the list according to the key word. +### This function will find a task from the list according to the key word. ``` find KEY_WORD ``` ## Bye -# This function will exit the app. -# Format +### This function will exit the app. +### Format ``` bye ``` From b84167c34a280881e6c63c1092a72c71cf108949 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Sun, 26 Sep 2021 23:49:06 +0800 Subject: [PATCH 31/53] Update README.md --- docs/README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index 4db6dd02e..c5203ad81 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,6 @@ ## Add a new task ### This function will add three types of task, including todo, event and deadline into the list. -### Format ``` todo TODO_NAME ``` @@ -19,20 +18,17 @@ todo TODO_NAME /by DATE ## Delete a task ### This function will delete an existing task from the list. -### Format ``` delete TASK_INDEX ``` ## List tasks ### This function will show all tasks in the list. -### Format ``` list ``` ## Done ### This function will make the task as done in the list. -### Format ``` done TASK_INDEX ``` @@ -44,7 +40,6 @@ find KEY_WORD ``` ## Bye ### This function will exit the app. -### Format ``` bye ``` From c90176d8cbb915382dc3353661e0ce3148019cba Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 26 Sep 2021 23:49:49 +0800 Subject: [PATCH 32/53] no message --- src/main/java/Duke/Duke.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index 81ef640d6..df8e28e1e 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -2,7 +2,7 @@ import java.util.Scanner; public class Duke { - + public static void main(String[] args) { Ui.printLogo(); Ui.greeting(); From c039eb1fe052f21beefb0078ed00ad8bd23cca79 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Sun, 26 Sep 2021 23:57:43 +0800 Subject: [PATCH 33/53] images --- data/lines.txt | 4 ++-- images/add.png | Bin 0 -> 42070 bytes images/bye.png | Bin 0 -> 5666 bytes images/delete.png | Bin 0 -> 11188 bytes images/done.png | Bin 0 -> 6872 bytes images/find.png | Bin 0 -> 9065 bytes images/list.png | Bin 0 -> 14286 bytes 7 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 images/add.png create mode 100644 images/bye.png create mode 100644 images/delete.png create mode 100644 images/done.png create mode 100644 images/find.png create mode 100644 images/list.png diff --git a/data/lines.txt b/data/lines.txt index 7bd22b609..07e32835e 100644 --- a/data/lines.txt +++ b/data/lines.txt @@ -1,2 +1,2 @@ -1 [T][ ] task1 -2 [T][ ] task2 +1 [E][ ] task2(a at Sun 8pm) +2 [D][ ] task3( by Sat 12pm) diff --git a/images/add.png b/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..8599ed296337cd240eebf75623117d5e82ca6b42 GIT binary patch literal 42070 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 V)!53+inRL$=;;`07il^?{V(%}R+Rt% literal 0 HcmV?d00001 diff --git a/images/delete.png b/images/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..8833aafcaa6bea901a552735d771bd9b784404c8 GIT binary patch literal 11188 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 literal 0 HcmV?d00001 diff --git a/images/done.png b/images/done.png new file mode 100644 index 0000000000000000000000000000000000000000..e8cda9fe02b0d47db776e7732f5a60d2bdf99d54 GIT binary patch literal 6872 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 literal 0 HcmV?d00001 diff --git a/images/find.png b/images/find.png new file mode 100644 index 0000000000000000000000000000000000000000..7a58a9d630a0a45556cfb74e777ee8c01f52d654 GIT binary patch literal 9065 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 Date: Sun, 26 Sep 2021 23:58:34 +0800 Subject: [PATCH 34/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index c5203ad81..ab80c6f5c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` - +Examples (/images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 379810778e1c4d38a0f15744085feefd74ac150c Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:01:00 +0800 Subject: [PATCH 35/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index ab80c6f5c..74183dfdb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -Examples (/images/add.png) +Examples (https://github.com/Cuiminjing/ip.git/images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 1d7f2da621519303a1696157a57472a92df8c3f3 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:02:00 +0800 Subject: [PATCH 36/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 74183dfdb..4f9888a0b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -Examples (https://github.com/Cuiminjing/ip.git/images/add.png) +Examples (images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 2e7fc7d5658fc6cb7b75820bb8c0355b0dd00526 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:02:20 +0800 Subject: [PATCH 37/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 4f9888a0b..47623e74a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -Examples (images/add.png) +[Examples] (images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From ac11498d3e87f726f14cc3152d6629103207fe1b Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:02:38 +0800 Subject: [PATCH 38/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 47623e74a..689630cb3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -[Examples] (images/add.png) +![Examples] (images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 46bfe80b640aa20faa16fd92075855abdb857e56 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:03:05 +0800 Subject: [PATCH 39/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 689630cb3..61735daa7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -![Examples] (images/add.png) +![Examples]\(images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From bf17d78539952c90f69c4adbe7cac002790a6796 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:03:29 +0800 Subject: [PATCH 40/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 61735daa7..b31dcd979 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -![Examples]\(images/add.png) +![Examples]\(https://github.com/Cuiminjing/ip.git/images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 4c56f42d4ad297002c3fc40677d5dd19d5346ba4 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:03:59 +0800 Subject: [PATCH 41/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index b31dcd979..b4e0a5e46 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -![Examples]\(https://github.com/Cuiminjing/ip.git/images/add.png) +![Examples](https://github.com/Cuiminjing/ip.git/images/add.png?raw=true) ## Delete a task ### This function will delete an existing task from the list. ``` From d0fbb007f639f539ecf061d5a4a4c19b078c6ca9 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:05:30 +0800 Subject: [PATCH 42/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index b4e0a5e46..356c049cb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -![Examples](https://github.com/Cuiminjing/ip.git/images/add.png?raw=true) +![image](https://github.com/Cuiminjing/ip.git/images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 05d765d614bd6512cd02cad10c2b17030b27da93 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Mon, 27 Sep 2021 00:05:54 +0800 Subject: [PATCH 43/53] Update README.md --- docs/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 356c049cb..9e1c6602d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,6 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` -![image](https://github.com/Cuiminjing/ip.git/images/add.png) ## Delete a task ### This function will delete an existing task from the list. ``` From 338ef726e38bb8b2e82b57c75c84463a2d1dbe5f Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Thu, 30 Sep 2021 15:22:58 +0800 Subject: [PATCH 44/53] final --- data/lines.txt | 2 -- lines.txt | 1 + src/main/java/Duke/Parser.java | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 data/lines.txt create mode 100644 lines.txt diff --git a/data/lines.txt b/data/lines.txt deleted file mode 100644 index 07e32835e..000000000 --- a/data/lines.txt +++ /dev/null @@ -1,2 +0,0 @@ -1 [E][ ] task2(a at Sun 8pm) -2 [D][ ] task3( by Sat 12pm) diff --git a/lines.txt b/lines.txt new file mode 100644 index 000000000..a09b545fc --- /dev/null +++ b/lines.txt @@ -0,0 +1 @@ +1 [T][ ] task1 diff --git a/src/main/java/Duke/Parser.java b/src/main/java/Duke/Parser.java index e5f87b66c..ec211fcc0 100644 --- a/src/main/java/Duke/Parser.java +++ b/src/main/java/Duke/Parser.java @@ -44,7 +44,7 @@ else if(request.contains("bye")){ flag = true; } System.out.println(Line); - String f = "data/lines.txt"; + String f = "lines.txt"; try { Command.writeToFile(f); } catch (IOException e) { From 59ebc427bdfd487d0c3e74e7712effdbf7be38c3 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Thu, 30 Sep 2021 15:42:07 +0800 Subject: [PATCH 45/53] add error detecting --- src/main/java/Duke/Command.java | 12 +++++++++--- src/main/java/Duke/Parser.java | 10 +++++----- src/main/java/Task/Deadline.java | 3 +++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/Duke/Command.java b/src/main/java/Duke/Command.java index 18ecc252f..34e7e8633 100644 --- a/src/main/java/Duke/Command.java +++ b/src/main/java/Duke/Command.java @@ -106,16 +106,22 @@ public static void event(String command){ * @param command A String to store the information of event command. */ public static void find(String command){ - System.out.println(" Here are the matching tasks in your list:"); int first = command.indexOf(" "); + int sum = 0 ; Task now; - String item = command.substring(first,command.length()); + String item = command.substring(first+1,command.length()); for(int i=0; i 7){ Command.delete(request); flag = true; } - else if(request.contains("todo")){ + else if(request.contains("todo") && request.length() > 5){ Command.todo(request); flag = true; } - else if(request.contains("deadline")){ + else if(request.contains("deadline") && request.contains("/by")){ Command.deadline(request); flag = true; } - else if(request.contains("event")){ + else if(request.contains("event") && request.contains("/at")){ Command.event(request); flag = true; } - else if(request.contains("find")){ + else if(request.contains("find") && request.length() > 5){ Command.find(request); flag = true; } diff --git a/src/main/java/Task/Deadline.java b/src/main/java/Task/Deadline.java index b4a5803bf..00cb7dcae 100644 --- a/src/main/java/Task/Deadline.java +++ b/src/main/java/Task/Deadline.java @@ -1,5 +1,8 @@ package Task; +import java.time.LocalDate; +import java.time.LocalTime; + public class Deadline extends Task { /** The deadline of the task**/ protected String by; From c521047d124fe8e953de318abcb9a04ffdbdafe7 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Thu, 30 Sep 2021 15:42:43 +0800 Subject: [PATCH 46/53] Update README.md --- docs/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index 9e1c6602d..1fb5bacff 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,7 +5,7 @@ ## Features ## Add a new task -### This function will add three types of task, including todo, event and deadline into the list. + This function will add three types of task, including todo, event and deadline into the list. ``` todo TODO_NAME ``` @@ -16,7 +16,7 @@ event EVENT_NAME /at DATE todo TODO_NAME /by DATE ``` ## Delete a task -### This function will delete an existing task from the list. + This function will delete an existing task from the list. ``` delete TASK_INDEX ``` @@ -27,18 +27,18 @@ delete TASK_INDEX list ``` ## Done -### This function will make the task as done in the list. + This function will make the task as done in the list. ``` done TASK_INDEX ``` ## Find -### This function will find a task from the list according to the key word. + This function will find a task from the list according to the key word. ``` find KEY_WORD ``` ## Bye -### This function will exit the app. + This function will exit the app. ``` bye ``` From b5314f131c309c22ff629478aa5194b449f40435 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Thu, 30 Sep 2021 15:45:08 +0800 Subject: [PATCH 47/53] Update README.md --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index 1fb5bacff..58f4e79a2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,6 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` +![example](https://github.com/Cuiminjing/ip/blob/master/images/add.png?raw=true) ## Delete a task This function will delete an existing task from the list. ``` From 5c06be40b84a099dd85b4712a3582371c4d14e1e Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Thu, 30 Sep 2021 15:45:46 +0800 Subject: [PATCH 48/53] Update README.md --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index 58f4e79a2..7c2391afa 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,6 +15,7 @@ event EVENT_NAME /at DATE ``` todo TODO_NAME /by DATE ``` +### Examples: ![example](https://github.com/Cuiminjing/ip/blob/master/images/add.png?raw=true) ## Delete a task This function will delete an existing task from the list. From 7f3abf0944e9b5a4cfa12acd55535205ee3a5316 Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Thu, 30 Sep 2021 15:47:15 +0800 Subject: [PATCH 49/53] Update README.md --- docs/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/README.md b/docs/README.md index 7c2391afa..de46f8d64 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,30 +17,43 @@ todo TODO_NAME /by DATE ``` ### Examples: ![example](https://github.com/Cuiminjing/ip/blob/master/images/add.png?raw=true) + ## Delete a task This function will delete an existing task from the list. ``` delete TASK_INDEX ``` +### Examples: +![example](https://github.com/Cuiminjing/ip/blob/master/images/delete.png?raw=true) ## List tasks ### This function will show all tasks in the list. ``` list ``` +### Examples: +![example](https://github.com/Cuiminjing/ip/blob/master/images/list.png?raw=true) + ## Done This function will make the task as done in the list. ``` done TASK_INDEX ``` +### Examples: +![example](https://github.com/Cuiminjing/ip/blob/master/images/done.png?raw=true) ## Find This function will find a task from the list according to the key word. ``` find KEY_WORD ``` +### Examples: +![example](https://github.com/Cuiminjing/ip/blob/master/images/find.png?raw=true) + ## Bye This function will exit the app. ``` bye ``` +### Examples: +![example](https://github.com/Cuiminjing/ip/blob/master/images/bye.png?raw=true) From 82aaf0f3657534ccf23c87751d1500f51de2151d Mon Sep 17 00:00:00 2001 From: Cuiminjing <70119533+Cuiminjing@users.noreply.github.com> Date: Thu, 30 Sep 2021 15:47:27 +0800 Subject: [PATCH 50/53] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index de46f8d64..99e9f019c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,7 +2,7 @@ **Duke** is a checklist app for recording tasks, via a Command Line Interfaces. -## Features +# Features ## Add a new task This function will add three types of task, including todo, event and deadline into the list. From 10f2a4a53f5b897edfedee91228d34a0f61a9595 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Thu, 30 Sep 2021 21:35:31 +0800 Subject: [PATCH 51/53] test --- docs/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/README.md b/docs/README.md index 99e9f019c..8d6447f09 100644 --- a/docs/README.md +++ b/docs/README.md @@ -57,3 +57,6 @@ bye ``` ### Examples: ![example](https://github.com/Cuiminjing/ip/blob/master/images/bye.png?raw=true) + + + From 12ecb0deeb0625b4e2e4af1e1b09f9244298e2ff Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Thu, 30 Sep 2021 23:19:40 +0800 Subject: [PATCH 52/53] final version of ip --- lines.txt | 5 ++- src/main/java/Duke/Command.java | 60 +++++++++++++++++++++++++++++---- src/main/java/Duke/Duke.java | 31 ++++++++++++++--- src/main/java/Task/Event.java | 2 +- src/main/java/Task/Task.java | 3 ++ 5 files changed, 89 insertions(+), 12 deletions(-) diff --git a/lines.txt b/lines.txt index a09b545fc..8ac24b614 100644 --- a/lines.txt +++ b/lines.txt @@ -1 +1,4 @@ -1 [T][ ] task1 +1 [T][ ]task1 +2 [D][ ]task3(by djiei) +3 [T][ ]task4 +4 [E][ ]task (at skjfijrijf) diff --git a/src/main/java/Duke/Command.java b/src/main/java/Duke/Command.java index 34e7e8633..780fb4013 100644 --- a/src/main/java/Duke/Command.java +++ b/src/main/java/Duke/Command.java @@ -51,7 +51,6 @@ public static void done(String command){ public static void delete(String command){ String[] number = command.split(" "); int taskIndex = Integer.parseInt(number[1]) - 1; - Task temp = tasks.get(taskIndex); taskSum--; System.out.println(" Noted. I've removed this task: " + "\n " + tasks.get(taskIndex).toString() + "\n" + " Now you have " + taskSum + " tasks in the list"); tasks.remove(taskIndex); @@ -63,7 +62,7 @@ public static void delete(String command){ */ public static void todo(String command){ int first = command.indexOf(" "); - String item = command.substring(first,command.length()); + String item = command.substring(first+1,command.length()); Task temp = new Todo(item); tasks.add(temp); taskSum++; @@ -77,12 +76,12 @@ public static void todo(String command){ public static void deadline(String command){ int first = command.indexOf(" "); int itemEnd = command.indexOf("/"); - String item = command.substring(first,itemEnd); + String item = command.substring(first+1,itemEnd); String by = command.substring(itemEnd + 1,command.length()); Task temp = new Deadline(item,by); tasks.add(temp); taskSum++; - System.out.println( " Got it. I've added this task: " + "\n" + " [D][ ] " + item + " (" + by + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); + System.out.println( " Got it. I've added this task: " + "\n" + " [D][ ] " + item + "(" + by + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); } @@ -93,12 +92,12 @@ public static void deadline(String command){ public static void event(String command){ int first = command.indexOf(" "); int itemEnd = command.indexOf("/"); - String item = command.substring(first,itemEnd); + String item = command.substring(first+1,itemEnd); String at = command.substring(itemEnd + 1,command.length()); Task temp = new Event(item,at); tasks.add(temp); taskSum++; - System.out.println(" Got it. I've added this task: " + "\n" + " [E][ ] " + item + " (" + at + ")" + "\n" + " Now you have " + taskSum + " tasks in the list"); + System.out.println(" Got it. I've added this task: " + "\n" + " [E][ ] " + item + at + "\n" + " Now you have " + taskSum + " tasks in the list"); } /** @@ -146,4 +145,53 @@ public static void writeToFile(String filePath) throws IOException { } fw.close(); } + + /** + * process information and add a Todo into list + * @param command A string store the raw information of this Todo + */ + public static void addTodo(String command){ + String item = command.substring(8,command.length()); + Task temp = new Todo(item); + if(command.charAt(6) == 'X'){ + temp.complete(); + } + tasks.add(temp); + taskSum++; + } + + /** + * process information and add an Event into list + * @param command A string store the raw information of this Event + */ + public static void addEvent(String command){ + String content = command.substring(8,command.length()); + int itemEnd = content.indexOf("("); + String item = content.substring(0,itemEnd); + String at = content.substring(itemEnd+1,content.length()-1); + Task temp = new Event(item,at); + if(command.charAt(6) == 'X'){ + temp.complete(); + } + tasks.add(temp); + taskSum++; + } + + /** + * process information and add a Deadline into list + * @param command A string store the raw information of this Deadline + */ + public static void addDeadline(String command){ + String content = command.substring(8,command.length()); + int itemEnd = content.indexOf("("); + String item = content.substring(0,itemEnd); + String by = content.substring(itemEnd+1,content.length()-1); + Task temp = new Deadline(item,by); + if(command.charAt(6) == 'X'){ + temp.complete(); + } + tasks.add(temp); + taskSum++; + } + } \ No newline at end of file diff --git a/src/main/java/Duke/Duke.java b/src/main/java/Duke/Duke.java index df8e28e1e..1c53e87c8 100644 --- a/src/main/java/Duke/Duke.java +++ b/src/main/java/Duke/Duke.java @@ -1,17 +1,40 @@ package Duke; +import Duke.Command; + +import java.io.File; +import java.io.IOException; import java.util.Scanner; public class Duke { public static void main(String[] args) { + /*read information from text*/ + try { + Scanner in = new Scanner(new File("lines.txt")); + String command; + while(in.hasNext()) { + command = in.nextLine(); + if(command.charAt(3) == 'T'){ + Command.addTodo(command); + } + if(command.charAt(3) == 'E'){ + Command.addEvent(command); + } + if(command.charAt(3) == 'D'){ + Command.addDeadline(command); + } + } + } catch (IOException e){ + System.out.println(e.getMessage()); + } Ui.printLogo(); Ui.greeting(); - String command; - Scanner in = new Scanner(System.in); + Scanner userInput = new Scanner(System.in); boolean flag = true; + String command; do{ - command = in.nextLine(); + command = userInput.nextLine(); flag = Parser.parse(command); - }while (flag); + } while (flag); } } diff --git a/src/main/java/Task/Event.java b/src/main/java/Task/Event.java index 94ba8880d..1fe4898c6 100644 --- a/src/main/java/Task/Event.java +++ b/src/main/java/Task/Event.java @@ -20,6 +20,6 @@ public Event(String content, String at) { */ @Override public String toString() { - return "[E]" + super.toString() + "(a" + at + ")"; + return "[E]" + super.toString() + "(" + at + ")"; } } diff --git a/src/main/java/Task/Task.java b/src/main/java/Task/Task.java index e45f5c45f..23ac3c3bf 100644 --- a/src/main/java/Task/Task.java +++ b/src/main/java/Task/Task.java @@ -15,6 +15,9 @@ public Task(String content) { this.Done = false; } + public String getContent() { + return this.content; + } /** * The methods to mark the task as done. */ From 8a4135c13fc2f25aa604033ff39ed054d5a44ee7 Mon Sep 17 00:00:00 2001 From: Cuiminjing Date: Fri, 1 Oct 2021 21:24:27 +0800 Subject: [PATCH 53/53] change for ug --- docs/README.md | 7 +++++++ lines.txt | 3 --- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 8d6447f09..11462bc7a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,6 +2,13 @@ **Duke** is a checklist app for recording tasks, via a Command Line Interfaces. + +# Quick Start + 1. Ensure that you install Java 11 in the computer + 2. Download ip.jar file in latest release V2.0 + 3. Execute the file by cmd + 4. Type the command in the command box + # Features ## Add a new task diff --git a/lines.txt b/lines.txt index 8ac24b614..fe59700ff 100644 --- a/lines.txt +++ b/lines.txt @@ -1,4 +1 @@ 1 [T][ ]task1 -2 [D][ ]task3(by djiei) -3 [T][ ]task4 -4 [E][ ]task (at skjfijrijf)