Lab 2 Feedback Marking scheme: -------------------- 1.6 / 2 -some unit tests failed; TAs, please check for errors -------------------- TA Comments: -from Lab 3 onwards, your fields should be private unless they appear as public in the API of the class -your setWeight and setHeight always throw an exception because they validate the fields this.weight and this.height instead of the arguments w and h -getInterpretationOfBMI fails because you set this.bmi in the method getBMI; if the client or tester does not call getBMI then this.bmi is never set -one solution for getInterpretationOfBMI is to call this.getBMI() on the first line of getInterpretationOfBMI; this will guarantee that this.bmi is set correctly -------------------- Style checker output: No style errors found by checkstyle; TAs, please check for poorly named variables, unusual programming constructs, and other style errors. -------------------- Unit tester output: YOUR SUMBISSION FAILED SOME UNIT TESTS Here is the test output: java -classpath .:/home/burton/work/teaching/2017F/2030/marking/lab2/_jar/* org.junit.runner.JUnitCore tests.Lab2Suite JUnit version 4.12 .E.E.E.E..E...E. Time: 0.032 There were 6 failures: 1) testCaseGiven1(tests.TestPerson) java.lang.IllegalArgumentException 2) testCaseGiven2(tests.TestPerson) java.lang.IllegalArgumentException 3) testCaseGiven3(tests.TestPerson) java.lang.IllegalArgumentException 4) testCaseGiven4(tests.TestPerson) java.lang.IllegalArgumentException 5) testGetBMIInterpretation(tests.TestPerson) java.lang.IllegalArgumentException 6) testGetBMI(tests.TestPerson) java.lang.IllegalArgumentException FAILURES!!! Tests run: 10, Failures: 6 -------------------- Your submission: package implementation; import java.util.Scanner; /* Areeba Abidi 214603179 * Nabil Jaffer 215240575 */ public class Person { public double weight; public double height; public double bmi; public String name; Scanner input = new Scanner(System.in); /** * Value for name is set * * @param name */ public Person(String name) { this.name = name; } /** * The weight of the person is set * * @param w * weight of the person */ public void setWeight(double w) { if (weight <= 0) { throw new IllegalArgumentException(); } this.weight = w; } /** * The height of the person is set * * @param h * height of the person */ public void setHeight(double h) { if (height <= 0) { throw new IllegalArgumentException(); } this.height = h; } /** * returns the value of BMI * * @return BMI Body Mass Index */ public double getBMI() { double heightSqr = height * height; double a = weight / heightSqr; double x = Math.round(a * 10); bmi = x / 10; return bmi; } /** * @return name of the person */ public String getName() { return name; } /** * @return weight of the person */ public double getWeight() { return weight; } /** * @return height of the person */ public double getHeight() { return height; } /** * @return the interpretation done by using BMI of the person */ public String getInterpretationOfBMI() { String statement = ""; if (bmi < 18.5) { statement = "You are under weight"; } if (bmi >= 18.5 && bmi < 25.0) { statement = "normal"; } if (bmi >= 25.0 && bmi < 30.0) { statement = "over weight"; } if (bmi >= 30.0) { statement = "obese"; } return statement; } }