Java Swing Exercise: BMI Calculator
for (int i=0; i &lt; Grade.values().length;i++){
            if(value &gt; Grade.OBS4.getLim()){
                return Grade.OBS4.getTitle();
            } else if(value &lt; Grade.INS.getLim()){
                return Grade.INS.getTitle();
            } else if(value &gt; Grade.values()[i].getLim() &amp;&amp; value &lt; Grade.values()[i+1].getLim()){
                return Grade.values()[i+1].getTitle();
            }
        }



You don't need the first two conditions in the for loop.  You can instead say 

        if (value &gt; Grade.OBS4.getLim()) {
            return Grade.OBS4.getTitle();
        }

        if (value &lt; Grade.INS.getLim()) {
            return Grade.INS.getTitle();
        }

        for (int i = 1; i &lt; Grade.values().length; i++) {
            if (value &gt; Grade.values()[i - 1].getLim() &amp;&amp; value &lt; Grade.values()[i].getLim()) {
                return Grade.values()[i].getTitle();
            }
        }


This is because those two conditions are invariant relative to the loop.  They'll either be true the first time or they will never be true.  Since you are returning, an else is unnecessary (although harmless if you prefer it).  

We don't need to check i equal to 0, as there is no -1 grade.  We instead just check the insufficient grade before the loop.  

If the BMI grade is exactly equal to the border marker, you'll fall through to the null case.  You should make one of those inequalities "or equal to", i.e. &gt;= or &lt;=.  Which one depends on the exact rules, which you don't include in your question.  I'm going to choose &gt;=.  

        for (Grade grade : Grade.values()) {
            if (value &lt; grade.getLim()) {
                return grade.getTitle();
            }
        }

        return Grade.OBS4.getTitle();


You may need to change your limits to match.  

Now we don't do any checks outside the loop.  And we don't need to compare across grades.  We know it's greater than or equal to previous grades, as if it were less than, we would already have returned.  

If we fall through the loop, we know that the value represents extreme obesity.  

I've added some additional whitespace for readability.  

I would prefer to replace Lim with Limit for readability.  

You can also use a NavigableMap here.  See here for an example on a similar problem.