$30
Task 1: Complete Weekly Java Tutorial Videos
• For Lab4, you are assigned to study Week 5 Part A to Part D of the Java tutorial series:
https://www.youtube.com/playlist?list=PL5dxAmCmjv_7Ri55ckAVTx0IbtcJEqzz8 To reference tutorial videos from the previous weeks, see:
]
https://www.youtube.com/playlist?list=PL5dxAmCmjv_6wy2m0yq2wObIWPz4tAxW6
These Java tutorial videos assigned to you are meant for you to:
1. Obtain extra hands-on programming experience on Java, supplementing your weekly lectures.
2. Complete the lab assignment with the necessary skills and background.
Though we do not require the submission of the weekly Java tutorial project (like in Lab0), examples and insights discussed in these tutorials will be covered in your (written and programming) tests and exam: should you decide to skip the weekly tutorial videos, it would be your choice.
As you study through the example Java classes in the tutorial videos, you are advised to type them out (but absolutely feel free to add new Java classes to experiment) on Eclipse.
• You can find the iPad notes of illustrations from the tutorial videos here:
https://www.eecs.yorku.ca/˜jackie/teaching/tutorials/notes/EECS1022%20Tutorial%20on%20Java.pdf
Getting Prepared for Programming Test 2
• Your Programming Test 2 (shortly after the reading week) will cover loops and arrays.
• Three sets of practice test questions are available on the M,N,O eClass site (under the Practice Programming Tests section).
Here is a tutorial series on the solution to each question: https://www.youtube.com/playlist?list=PL5dxAmCmjv_4UZNiLzeFPAgDDv2vLCGb4
• You may consider tackling some of the practice tests, which will help you complete the lab exercises.
2 Task 2: Complete Programming Exercises
Starting Task 2 should mean that you have already completed the weekly Java tutorial videos (Section 1).
2.1 Step 1: Download and Import the Starter Project
1. Download the Eclipse Java project archive file from eClass: EECS1022W21Lab4.zip
Launch Eclipse and browse to EECS1022-W21-workspace as the Workspace then click on Launch, e.g.,
3.3 Choose Select archive file. Make sure that the EECS1022W21Lab4 box is checked under Projects.
2.2 Step 2: Programming Tasks
From the Package Explorer of Eclipse, your imported project has the following structure.
• You can manually test the assigned methods using the corresponding console application classes in package consoleapps. These classes are completed and given to you. See below for more descriptions.
• Your goal is to pass all JUnit tests given to you (i.e., a green bar). To run them, as shown in the Java tutorials on Week 1, right click on TestUtilities.java and run it as JUnit tests. Of course, none of the given tests would pass to begin with.
How to Deal with a Failed JUnit Test? From the JUnit panel from Eclipse, click on the failed test, then double click on the first line underneath Failure Trace, then you can see the expected value versus the return value from your utility method.
2.2.1 getMultiplesOf3
You are asked to implement a utility method which takes as input an array of integers and returns
another array containing all those elements that are multiples of 3. For example, if the input array is:
<2, 1, 6, 5, 4, 3
Then the output or returned array is:
<6, 3
Note that the length of the output array corresponds the number of elements in the input array that are multiples of 3, meaning that if the input array is empty, or if there are no multiples of 3 in the input array, then the output array should be empty.
Also, the output array should preserve the order in which these multiples, if any, appear in the input array. For example, in the above example, multiples of 3 in the input array appear in the order of 6 followed by 3, which is reflected in the output array.
Testing. Your goal is to first pass all tests related to this method in the JUnit test class TestUtilities. You are encouraged to write additional JUnit tests. These tests document the expected values on various cases: study them while developing your code.
However, use the console application class GetMultiplesOf3App if you wish (e.g., use the input and expected values from the JUnit tests). Here is an example run:
How many numbers do you want to input?
10
Enter input 1: 89
Enter input 2: 23
Enter input 3: 42
Enter input 4: 87
Enter input 5: 18
Enter input 6: 36
Enter input 7: 23
Enter input 8: 97
Enter input 9:
102
Enter input 10:
987
<42, 87, 18, 36, 102, 987
Todo. Implement the Utilities.getMultiplesOf3 method. See the comments there for the input parameters and requirements.
2.2.2 getFilteredSeq
You are asked to implement a utility method which takes as input an array (say numbers) of integers
and an integer (say n). Note that n may or may not exist in numbers. The utility method returns another array containing all elements in numbers that are not equal to n. For example, if the input n is 3 and the input array numbers is:
<3, 1, 2, 3, 4
Then the output or returned array is:
<1, 2, 4
Note that the length of the output array corresponds the number of elements in the input array that are not equal to n, meaning that if the input array is empty, or if n does not exist in the input array, then the output array should be just the same as the input array.
Also, the output array should preserve the order in which elements appear in the input array. For example, in the above example, elements in the output array appear in the order of 1 followed by 2 and then by 4, which is reflected in the input array.
Testing. Your goal is to first pass all tests related to this method in the JUnit test class TestUtilities. You are encouraged to write additional JUnit tests. These tests document the expected values on various cases: study them while developing your code.
However, use the console application class GetFilteredSeqApp if you wish (e.g., use the input and expected values from the JUnit tests). Here is an example run:
How many numbers do you want to input?
5
Enter input 1: 3
Enter input 2: 1
Enter input 3: 2
Enter input 4: 3
Enter input 5:
4
Which number do you wish to filter from the input numbers?
3
<1, 2, 4
Todo. Implement the Utilities.getFilteredSeq method. See the comments there for the input parameters and requirements.
2.2.3 getAllPrefixes
You are asked to implement a utility method which takes as input an array of integers and returns
another array of strings, each of which denoting a non-empty prefix of the input array. For example, if the input array is:
<3, 1, 4
Then the output or returned array of string values is:
<"[3]", "[3, 1]", "[3, 1, 4]"
Note that the length of the output array is equal to the length of the input array. Also, elements in the output array are “sorted” by the lengths of the prefixes (e.g,. the first element is the prefix of length 1, the second element is the prefix of length 2).
Testing. Your goal is to first pass all tests related to this method in the JUnit test class TestUtilities. You are encouraged to write additional JUnit tests. These tests document the expected values on various cases: study them while developing your code.
However, use the console application class GetAllPrefixesApp if you wish (e.g., use the input and expected values from the JUnit tests). Here is an example run:
How many numbers do you want to input?
5
Enter input 1: 3
Enter input 2: 1
Enter input 3: 4
Enter input 4: 2
Enter input 5:
5
<[3], [3, 1], [3, 1, 4], [3, 1, 4, 2], [3, 1, 4, 2, 5]
Todo. Implement the Utilities.getAllPrefixes method. See the comments there for the input parameters and requirements.
2.2.4 getGroupedNumbers
You are asked to implement a utility method which takes as input an array of integers and returns
another array grouping all elements from the input array as follows, from left to right: 1) elements divisible by 3; 2) elements divided by 3 with the remainder 1; and 3) elements divided by 3 with the remainder 2. For example, if the input array is:
<2, 4, 6, 5, 1, 3
Then the output or returned array is:
Group 1 Group 2 Group 3
Note that the input and output arrays are equally long, meaning that if the input array is empty, then the output array should be empty.
Also, each group of the output array should preserve the order in which its elements appear in the input array. For example, in the above example, Group 2 of the output array (i.e., those divided by 3 with the remainder 1) contains 4 followed by 1, reflecting their order in the input array.
Testing. Your goal is to first pass all tests related to this method in the JUnit test class TestUtilities. You are encouraged to write additional JUnit tests. These tests document the expected values on various cases: study them while developing your code.
However, use the console application class GetGroupedNumbersApp if you wish (e.g., use the input and expected values from the JUnit tests). Here is an example run:
How many numbers do you want to input?
10
Enter input 1: 89
Enter input 2: 22
Enter input 3: 42
Enter input 4: 87
Enter input 5: 19
Enter input 6: 36
Enter input 7: 23
Enter input 8: 97
Enter input 9:
102
Enter input 10:
987
<42, 87, 36, 102, 987, 22, 19, 97, 89, 23
Todo. Implement the Utilities.getGroupedNumbers method. See the comments there for the input parameters and requirements.