Total Score
Question 4
Why my answer was incorrect: If the largest value in arr was zero, the algorithm would work correctly since maxVal starts at the largest value.
Why C is the correct answer: Since maxVal is initialized to a value that is greater than all values in arr, maxVal will never be updated and 0 will be returned. To correct this, maxVal could be initialized to the first element in arr or initialized to Integer.MIN_VALUE.
Question 8
Why my answer was incorrect: This would be the result if the array results were assigned the products in the opposite order that they are calculated. In other words, for each value of j, the calculated product was assigned to result[result.length – 1 - j].
Why B is the correct answer: In the first iteration of the for loop, j is 0. The value of result[0] is assigned the product of row 1, column 0, which is 1 and row 0, column 2, which is 1. Therefore, result[0] is assigned the value 1. The second iteration of the for loop, when j is 1, result[1] is assigned the product of row 1, column 1, which is 2, and row 1, column 2, which is 3. Therefore, result[1] is assigned the value 6. The third iteration of the for loop, when j is 2, result[2] is assigned the product of row 1, column 2, which is 3, and row 2, column 2, which is 1. Therefore, result[2] is assigned the value 3. The final iteration of the for loop, when j is 3, result[3] is assigned the product of row 1, column 3, which is 4, and row 3, column 2, which is 1. Therefore, result[3] is assigned the value 4.
Question 9
Why my answer was incorrect: This would result in an integer between 0 and 10 inclusive, since (int)(Math.random() *6) generates an integer between 0 and 5 inclusive. While it does represent two independent random numbers being generated, to simulate the rolling of two number cubes, the value of each number should be between 1 and 6 inclusive to produce a sum in the range of 2 to 12.
Why E is the correct answer: The call Math.random() will produce a double between 0 and 1, not including 1. To generate a random number in the range of 1 to 6, the call Math.random() needs to be multiplied by the number of integers you want to generate, in this case 6, giving us Math.random() * 6. This will result in a double between 0 and 6, not including 6. If we type cast this to an int, as in (int)(Math.random() * 6), the result will be an integer between 0 and 5 inclusive. Adding 1 will adjust the range to 1 to 6 inclusive, as in (int)(Math.random() * 6) + 1. This expression will simulate the rolling of one number cube. Since each roll is independent, to simulate rolling two number cubes, we need to use this expression twice which simplifies to 2 + (int)(Math.random() * 6) + (int)(Math.random() * 6).
Question 13
Why my answer was incorrect: This would be the result if the loop incremented by 1 instead of 3 (the value of x.)
Why C is the correct answer: The values of the loop control variable k starts at 1 and is incremented by 3 as long as k is less than numbers.length. As a result, k will have the values 1, 4, 7 and then when it becomes 10, the loop will end. Only the values in numbers at indexes 1, 4, and 7 will be updated to the value of the sum of the element at the index that is one less than k (the element before the one being updated) and 3. So, numbers[1] will be assigned the value of numbers[0] + 3 or 20, numbers[4] will be assigned the value of numbers[3] + 3 or 45, and numbers[7] will be assigned the value of numbers[6] + 3 or 51. All other values will be unchanged.
Question 20
Why my answer was incorrect: This would be correct if m was returned instead of index.
Why E is the correct answer: The outer loop starts at 0 and loops through all the indices in arr. The inner loop starts at the index that is one more than outer and iterates through all indices to the right of this element. For each iteration of the inner loop, the element at the current value of outer is compared with each subsequent element. If the elements are equal, then count is incremented. This results in counting the number of occurrences of each value in the arr. After the inner loop terminates, if the number of occurrences of the current value is greater than previous highest count, the new count is assigned to m and the index of this element is stored in index. The method then returns the value of index, which represents the index of a value that occurs most often in nums.
Question 23
Why my answer was incorrect: This insertion sort method begins sorting the array from the beginning putting the first three numbers in order during the first two passes. Only 3, 4, and 5 will be in the right order.
Why C is the correct answer: In the first pass of the loop, arr[1] is assigned the value insertItem, which is 4 and k is assigned the value 0. The boolean expression in the while loop is true, since k is equal to 0 and 4 is less than arr[0], which is 5. In the body of the for loop arr[1] is assigned the value of arr[0], making the array have the contents {5, 5, 3, 2, 1} and k is decremented by 1, making it -1. The while loop boolean expression is now false and arr[0] is assigned the value of insertItem, which is 4. The array arr has the contents {4, 5, 3, 2, 1} after the first pass. The second pass, when j = 2, arr[2] is assigned insertItem, which is 3, and k is assigned 1. The boolean expression in the while loop is true, so arr becomes {4, 5, 5, 2, 1} and k is assigned 0. The boolean expression in the while loop is true, so arr becomes {4, 4, 5, 2, 1} and k is assigned -1. The boolean expression is now false and arr becomes {3, 4, 5, 2, 1} at the end of two passes through the for loop.
Overall Reflection: