Search code examples
conditional-statementsgetter-setter

Conditional statement in getter method


Am relatively new to java so I have no idea what the problem is. In my getter settings of this class, I'm trying to evaluate if the input is of integer 1, 2 or 3, then it will return one of the previously saved setters described here. I used the same conditional statements in the setter, but the getter tells me that my method needs to return type int. What am I doing wrong? Or should I be doing this a completely different way? lol.

public class AssignmentMarks {
    private String courseName;
    private int assignment1 = 0, assignment2 = 0, assignment3 = 0;


    public AssignmentMarks(String name, int mark1, int mark2, int mark3){
        //create constructor to use variables.
        this.courseName = name;
        this.assignment1 = mark1;
        this.assignment2 = mark2;
        this.assignment3 = mark3;

    }
    public void setMark(int assignmentNumber, int mark) {
        //assign value of the assignments
        if(assignmentNumber == 1) {
            mark = this.assignment1;
        }else if(assignmentNumber == 2) {
            mark = this.assignment2;
        }else if(assignmentNumber == 3){
            mark = this.assignment3;
        }

    }

    public int getMark(int assignmentNum) {
        if(assignmentNum == 1) {
            return assignment1;
        }else if (assignmentNum == 2) {
            return assignment2;
        } else if (assignmentNum == 3) {
            return assignment3;
        }
    }



}

Solution

  • public int getMark(int assignmentNum) {
        if(assignmentNum == 1) {
            return assignment1;
        }else if (assignmentNum == 2) {
            return assignment2;
        } else if (assignmentNum == 3) {
            return assignment3;
        }
    
         // in another case       
         throw new Exception("Assignment must be 1, 2 or 3);
    
    }
    

    for setter

       public void setMark(int assignmentNumber, int mark) {
                //assign value of the assignments
                if(assignmentNumber == 1) {
                     // BAD mark = this.assignment1; don't set parameter is useless
                     this.assignment1=mark;     
                }else if(assignmentNumber == 2) {
                     // BAD mark = this.assignment2;
                     this.assignment2=mark;     
                }else if(assignmentNumber == 3){
                     // BAD mark = this.assignment3;
                     this.assignment3=mark;
                } 
             // in another case
             throw new Exception("Assignment must be 1, 2 or 3");
    }
    

    I don't remember if you must import Exception for throwing them. if yes put import java.lang.Exception on top of your code.

    your logic can be improved using arrays, but let's walk, and after you will running...