CSSE 220 – Object-Oriented Software Development

Homework 9

Objectives

Practice with arrays and ArrayLists in Java. More practice with loops and debugging in Java. More practice implementing classes based on a given specification.

Tasks

  1. Complete the assigned reading for the next session: §7.6–7.8. (See schedule for topics to focus on.) As you read, see if you can answer the self-check questions. If there is something you do not understand, make note of it so you can ask about it.
  2. Complete the assessment exercise over this reading on ANGEL (under Lessons → Assignments).
  3. Programming:
    1. Your programming work for this assignment must be done in the ArraysAndLists project inside Eclipse. Use the SVN Repository Exploring perspective to check out this project, then switch back to the Java perspective.
    2. Finish any methods in ElectoralSimulator and ElectoralSimulatorMain that you didn’t complete in class. See TODO comments for details.

      Here’s an example of the output from my solution for your reference. I omitted a bunch of rows with 0 stars and increased the number of trials to a very large number to get a smoother curve. (Note that these are probabilities from a random simulation, so the number of stars won't be exactly the same every time.) In my solution I added a line before 270 electoral votes, the number required for candidate A to win.

        0: 
        1: 
           ...
      135: 
      136: 
      137: *
      138: *
      139: *
      140: *
      141: *
      142: *
      143: *
      144: *
      145: *
      146: *
      147: *
      148: **
      149: *
      150: **
      151: **
      152: **
      153: **
      154: **
      155: **
      156: ***
      157: ***
      158: ***
      159: ***
      160: ***
      161: ****
      162: ****
      163: ****
      164: ****
      165: *****
      166: *****
      167: *****
      168: *****
      169: ******
      170: ******
      171: ******
      172: ******
      173: ******
      174: *******
      175: *******
      176: ********
      177: ********
      178: ********
      179: ********
      180: *********
      181: *********
      182: *********
      183: **********
      184: **********
      185: ***********
      186: ***********
      187: ***********
      188: ************
      189: ************
      190: *************
      191: *************
      192: *************
      193: **************
      194: **************
      195: ***************
      196: **************
      197: ****************
      198: ****************
      199: *****************
      200: *****************
      201: *****************
      202: ******************
      203: ******************
      204: *******************
      205: ********************
      206: ********************
      207: ********************
      208: *********************
      209: *********************
      210: **********************
      211: **********************
      212: ***********************
      213: ***********************
      214: ************************
      215: *************************
      216: *************************
      217: **************************
      218: **************************
      219: ***************************
      220: ***************************
      221: ***************************
      222: ****************************
      223: ******************************
      224: *****************************
      225: ******************************
      226: *******************************
      227: *******************************
      228: ********************************
      229: *********************************
      230: **********************************
      231: **********************************
      232: **********************************
      233: ***********************************
      234: ***********************************
      235: ************************************
      236: ************************************
      237: *************************************
      238: **************************************
      239: **************************************
      240: **************************************
      241: ***************************************
      242: ***************************************
      243: ****************************************
      244: ****************************************
      245: *****************************************
      246: *****************************************
      247: *****************************************
      248: ******************************************
      249: ******************************************
      250: ******************************************
      251: ********************************************
      252: ********************************************
      253: *******************************************
      254: ********************************************
      255: *********************************************
      256: *********************************************
      257: **********************************************
      258: **********************************************
      259: ***********************************************
      260: **********************************************
      261: **********************************************
      262: ************************************************
      263: ***********************************************
      264: ***********************************************
      265: ***********************************************
      266: ***********************************************
      267: **********************************************
      268: ************************************************
      269: ************************************************
      -------------------------------------------------------
      270: ************************************************
      271: ************************************************
      272: *************************************************
      273: ************************************************
      274: *************************************************
      275: *************************************************
      276: *************************************************
      277: ************************************************
      278: *************************************************
      279: ************************************************
      280: *************************************************
      281: *************************************************
      282: **************************************************
      283: ************************************************
      284: *************************************************
      285: ************************************************
      286: ************************************************
      287: ************************************************
      288: ************************************************
      289: ************************************************
      290: ************************************************
      291: ************************************************
      292: ************************************************
      293: ***********************************************
      294: **********************************************
      295: **********************************************
      296: **********************************************
      297: *********************************************
      298: *********************************************
      299: *********************************************
      300: ********************************************
      301: *********************************************
      302: ********************************************
      303: ********************************************
      304: *******************************************
      305: ******************************************
      306: ******************************************
      307: ******************************************
      308: *****************************************
      309: *****************************************
      310: ****************************************
      311: ***************************************
      312: ***************************************
      313: ****************************************
      314: **************************************
      315: **************************************
      316: **************************************
      317: ************************************
      318: *************************************
      319: ************************************
      320: ***********************************
      321: **********************************
      322: **********************************
      323: **********************************
      324: *********************************
      325: ********************************
      326: *******************************
      327: *******************************
      328: *******************************
      329: ******************************
      330: ******************************
      331: ****************************
      332: ****************************
      333: ****************************
      334: ****************************
      335: ***************************
      336: *************************
      337: *************************
      338: ************************
      339: ************************
      340: ************************
      341: ***********************
      342: **********************
      343: **********************
      344: *********************
      345: ********************
      346: ********************
      347: *******************
      348: *******************
      349: ******************
      350: *****************
      351: *****************
      352: *****************
      353: ****************
      354: ****************
      355: ***************
      356: ***************
      357: **************
      358: **************
      359: *************
      360: *************
      361: ************
      362: ************
      363: ***********
      364: ***********
      365: ***********
      366: **********
      367: **********
      368: **********
      369: *********
      370: *********
      371: *********
      372: ********
      373: *******
      374: *******
      375: *******
      376: *******
      377: ******
      378: ******
      379: *****
      380: *****
      381: *****
      382: *****
      383: ****
      384: ****
      385: ****
      386: ****
      387: ****
      388: ****
      389: ***
      390: ***
      391: ***
      392: ***
      393: **
      394: **
      395: **
      396: **
      397: **
      398: **
      399: **
      400: *
      401: *
      402: *
      403: *
      404: *
      405: *
      406: *
      407: *
      408: *
      409: 
      410: *
      411: 
      412: *
      413: 
           ...
      537: 
      538: 
      Candidate A victory probability: 55.0 %
      Candidate B victory probability: 44.3 %
      
    3. Bonus: Add code to ElectoralSimulatorMain to display a graphical bar chart of the results in addition to the textual one. Use three different colors for the bars: one for bars representing fewer than half the electoral votes, one for bars representing more than half, and one for a tie.
    4. ArrayList practice:
      1. Create a class QuizScoresMain containing a main() method.
      2. In the main() method, create an ArrayList to store quiz scores. Use an element type that will support half-points.
      3. Write a sentinel loop to get quiz scores from the user.
      4. Create a QuizScores class whose constructor takes an ArrayList containing the quiz scores.
      5. In your QuizScores class, document and implement methods for each of the operations below. Be sure to create JUnit tests for each method.
        • return the highest quiz score
        • return the lowest quiz score
        • return the average quiz score
        • add a given number of points to every quiz score
        • count how many quizzes had a given score
        Big Java, §7.5, may be a helpful reference if you get stuck.

Turn-in Instructions

Turn in your programming work by committing it to your SVN repository.