There is another test case not shown here with about 6 different test scores. How do I use a FOR-EACh loop to keep count of the number of scores over 85?
public class BetterLoop { /** * Accept an applicant if they have at least 4 grades above 85. Their non-CS * GPA counts as a grade in this case. * * @param scores The applicant's list of scores * @return true if the applicant meets the requirements */ public static boolean atLeastFourOver85(int[] scores) { /* * Use a FOR-EACH loop. How would you keep count of the number of scores over 85? */ int total = 0; for(int score: scores){ if (score < 85); total += 1; } return false; }
Advertisement
Answer
I would write something like this:
public static boolean atLeastFourOver85(int[] scores) { /* * Use a FOR-EACH loop. How would you keep count of the number of scores over 85? */ int found = 0; for(int score : scores) { if (score > 85) found++; } return found >= 4; }
And here is the unit test:
class BetterLoopTest {
@Test public void testLoop(){ assertFalse(BetterLoop.atLeastFourOver85(new int[]{1,2,3})); assertFalse(BetterLoop.atLeastFourOver85(new int[]{1,2,3,86,86,86,34})); assertTrue(BetterLoop.atLeastFourOver85(new int[]{1,2,3,86,86,86,34,86,45})); }
}